Google Playストアですべての評価を表示するにはどうすればよいですか?


8

Playですべての評価を表示する方法はありますか?

いくつかの評価が降順で表示されます。

ここに画像の説明を入力してください

しかし、数十万件のレビューの場合、この方法では5つ星の評価しか読み取れません。

評価を表示する別のより良い方法はありますか?

多分これはGreasemonkeyで可能ですか?

回答:


4

同様に、Google Playに適切なフィルタリング/並べ替えオプションがないことにも不満があり、Greasemonkeyスクリプトで問題を解決できるという提案に触発され、https://greasyfork.org/en/にアップロードしたスクリプトを作成することにしました。 scripts / 24667-google-play-review-rating-filter。5つのチェックボックスがplay.google.comのアプリページに追加され、特定の星評価のレビューをフィルターできます。私はそれをテストしてみたのGreasemonkeyスクリプトインジェクター統一 Firefoxで、かつTampermonkeyを Chromeで。

ここではスクリプト全体を再現するのではなく、興味があると思われる人のために取られたアプローチについて説明します。TL; DR:ソリューションが必要な場合は、適切なブラウザーアドオンをインストールし、上記のリンクからユーザースクリプトをダウンロードします。他のほとんどのAndroidブラウザーはアドインをサポートしていないため、Androidデバイス自体で使用する場合は、USIアドオンでFirefoxを使用する必要があります(また、メニューから[デスクトップサイトのリクエスト]を選択する必要があります)。 onsまたはユーザースクリプトとGreasemonkeyは現在Android版Firefoxでは機能しません。GooglePlayアプリでは機能しません。

レビューをフリックすると、GP(Google Play)が/store/getreviewsHTTP POSTメソッドを使用して、URLへのAJAXリクエストを介して追加のレビューのデータをロードします。したがって、これらのAJAX呼び出しをフックすることにより、GPに返されるデータを変更することが可能です。

XMLHttpRequest.prototype.openオリジナルを呼び出す関数に置き換えることができますが、最初に、リクエストがレビューデータ用である場合は、XHR(XMLHttpRequest)オブジェクトを変更して、POSTリクエストボディをキャプチャし、レスポンスを変更できるようにします。sendプロパティが格納する関数としてXHRオブジェクトに割り当てることができるPOST原稿を呼び出す前にデータを。onreadystatechangeプロパティは、このプロパティにGPによって割り当てられた機能を呼び出す前に応答を変更する関数として割り当てることができます。GPはonreadystatechangeこの後に割り当てるObject.definePropertyので、実際に内部プロパティに割り当てられるのではなく、GPが設定する値が格納されるようにプロパティを再定義するために使用する必要があります。また、responseTextプロパティは読み取り専用でObject.definePropertyあるため、値を変更する必要があります。

GPから返されるデータはJSON形式ですが、変更されたデータで忠実に再現する必要のある、いくつかのジャンク文字が最初にあります。

次のコードはこれを示しており、ブラウザの開発者コンソールウィンドウにリクエスト本文とレスポンスデータを出力します(実際には変更しません)。

XMLHttpRequest.prototype.open = (function(open) {
  return function(method, url) {
    if (
      method === 'POST' &&
      url &&
      url.replace(/^https?:\/\/play\.google\.com/, '').split('?', 1)[0] ===
        '/store/getreviews'
    ) {
      var requestBody;
      var orgSend = this.send;
      var orgOnReadyStateChange = this.onreadystatechange;
      this.send = function(data) {
        requestBody = data;
        return orgSend.apply(this, arguments);
      };
      this.onreadystatechange = function() {
        if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
          var responseText = this.responseText;
          var nJunkChars = responseText.indexOf('[');
          try {
            var jsonData = JSON.parse(
              nJunkChars ? responseText.substr(nJunkChars) : responseText
            );
            // TODO: modify jsonData here
            console.log('Request: %o\nResponse: %o', requestBody, jsonData);
            Object.defineProperty(this, 'responseText', {
              value: responseText.substr(0, nJunkChars) +
                JSON.stringify(jsonData),
              configurable: true,
              enumerable: true
            });
          } catch (e) {
            console && console.log && console.log(e);
          }
        }
        if (orgOnReadyStateChange) {
          return orgOnReadyStateChange.apply(this, arguments);
        }
      };
      Object.defineProperty(this, 'onreadystatechange', {
        get: function() { return orgOnReadyStateChange; },
        set: function(v) { orgOnReadyStateChange = v; },
        configurable: true,
        enumerable: true
      });
    }
    return open.apply(this, arguments);
  };
})(XMLHttpRequest.prototype.open);

GPから返されるデータは、次の4つの要素の配列である1つの要素の配列で構成されます。

  • 文字列"ecr";
  • 1さらにレビューがある2場合、これがレビューの最後の「ページ」である3場合、エラーが発生した場合。
  • レビュー(および開発者の返信)の「ページ」を含むHTML –現在、ページごとに40件のレビューが返されます。
  • pageNumPOSTリクエスト本文のパラメータに対応するページ番号。

HTMLを変更して、興味のあるもの以外の星評価を付けたレビュー(および関連する開発者の返信)を削除できます。レビューはセレクターにdiv.single-review一致div.current-ratingし、CSS幅プロパティが評価に対応するパーセンテージ(20%1つ星、40%2つ星など)であるインラインスタイルと一致する子孫を持ちます。開発者の返信はセレクターに一致しdiv.developer-reply、レビュー直後の兄弟です。

チェックボックスをUIに追加して、表示するレビューの星評価を選択できるようにするのは、かなり簡単です。ただし、選択が変更された場合、レビューは新たにフェッチする必要があります。ソート順を変更すると、以前と同じソート順を選択した場合と同様に、これが発生します。したがって、これを自動的に実現するには、チェックボックスが変更されるたびclickに、現在選択されているソート順要素でイベントをトリガーできます。これは、のセレクターで見つけることができます.id-review-sort-filter .dropdown-child.selected。GPのアプリページが最初に読み込まれるとき、レビューの最初のページは既に含まれており、AJAX経由で読み込まれませんが、チェックボックスがすべて最初にチェックされている限り、それは問題になりません。

(40)レビューのページに、目的の評価のレビューが含まれていない場合があります。返されたHTMLに要素が存在しない場合、GPはこれ以上ページを要求しません。したがって、これに対応するには、pageNum返すレビューがいくつかあるまで、レビューの追加ページを(同じAJAX APIを介して、ただしパラメーターを変更して)フェッチする必要があります。そして、後続のページではpageNum、これを説明するためにパラメーターを変換する必要があります。

選択した並べ替え順が「評価」の場合、希望する評価の前に5つ星のレビューのページが多数表示される可能性があります。ページとレビューのページを繰り返しフェッチして破棄すると効率が悪くなります(Googleによる一時的なIPブロックがトリガーされる可能性があります)。この場合、reviewSortOrderパラメータがの1場合、バイナリ検索を使用して、返すレビューのある次のページをはるかにすばやく見つけることができます。セレクターに一致するページ要素をspan.reviews-num検査して、レビューの合計数を見つけ、上限ページ数を決定できます。ただし、現在判明しているように、111ページを超えるページに対するリクエストはHTTP 400応答を受け取ります。


非常に役立つスクリプト。ありがとう!
ブロックアダムス

1

これはAndroidとデバイス向けのGoogle Playアプリでのみ機能しますが、ほとんどのGoogle Playはウェブ上のデスクトップ向けではなくなりました。Google 介してアプリの評価とレビューを確認し、CSVファイルにエクスポートして、アプリの評価とレビューデータを確認できます。

評価とレビューをDeveloper Consoleからエクスポートすることで、傾向をまとめて分析して、ユーザーのフィードバックをよりよく理解できます。レポートは毎日生成され、毎月のCSVファイルに蓄積され、Google Cloud Storageバケットに保存されます。

セクション見出し、「レビューデータのファイル形式」があります

Field                 Format                    Optional    Example
Package Name          String                        NO      com.company.app
App Version Code      int32                         YES 
Star Rating           int32 (between 1 and 5)       NO  
Review Title    
Review Text String
Review Link String                                  NO      https://play.google.com/apps/publish/?dev_acc=<...>#ReviewPlace:id=<..>

これも試して、個々のアプリケーション統計、評価を表示してください。


-1

これにはApp Annieをお勧めします。彼らはあなたが無料であなた自身のアプリを監視し、あなたの競争相手のアプリに関する情報を得るために支払うことを可能にします。

特にレビューについては、簡単な「CSVダウンロード」ボタンがあります。彼らは過去のデータさえ持っているので、今日サインアップすれば過去のレビューにすぐにアクセスできるはずです。


これは広告によく似ています。製品に関係している場合は、回答でそれを開示し、OPが実行しようとしている実際のタスクにどのように適合しているかを回答するように再構成してください。
jonsca
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.