🍎

AppStoreのレビュースコアを自動で取得しグラフ化する方法⭐

2023/08/31に公開

はじめに

AppStoreのレビューのスコアはサービスがユーザーから支持されているかを示す重要なヒントであり、★1~5のレビューの各レビュー数を毎日記録しグラフで可視化することで各リリースに対するユーザーの反応や現在の路線がどれだけ好まれているかを知ることができます。

しかし正規のAPIからは★1~5の各スコアの個数を取得できないため、自動的に記録を取り続けるにはストアのページのスクレイピングを行う必要があります。

方法

Google Spread Sheetを利用して行います。
データの取得はGoogle App Scriptの定期実行によって行い、Spread Sheetでデータの保存とグラフによる可視化を行います。

Google App Script

新規にシートを作成し拡張機能のGoogle App Scriptを選択してください。

次に、以下のコードを貼り付けてください。

function myFunction() {
  //レビューのスコアを取得するアプリのストアのURLを入れてください。
  const url = 'https://apps.apple.com/jp/app/x/id333903271';
  const response = UrlFetchApp.fetch(url);
  const htmlContent = response.getContentText();

  const match = htmlContent.match(/"ratingCountList\\\":\[(\d+),(\d+),(\d+),(\d+),(\d+)\]/);
  
  if (match) {
    const [fullMatch, ...counts] = match;
    const scoreNumbers = counts.map(Number)
    const ss = SpreadsheetApp.getActiveSpreadsheet();
    // シートの名前を適宜変更してください
    const sheet = ss.getSheetByName("シート1"); 

    //日付を取得
    const date = new Date();
    const formattedDate = Utilities.formatDate(date, "JST", "MM/dd");

    // ★1~5の各点数の重みを付けた加重平均を出す
    const totalReviews = scoreNumbers.reduce((a, b) => a + b, 0);
    const weightedScore = scoreNumbers.reduce((acc, current, index) => acc + current * (index + 1), 0);
    const averageScore = weightedScore / totalReviews;

    // 前回のデータとの差分の差分を計算
    const lastRowData = sheet.getRange(sheet.getLastRow(), 2, 1, 5).getValues()[0];

    if (lastRowData) {
      const diffs = scoreNumbers.map((value, index) => value - lastRowData[index]);
        // 差分の差分の加重平均を計算
      const totalDiffs = diffs.reduce((a, b) => a + b, 0);
      const weightedDiffs = diffs.reduce((acc, current, index) => acc + current * (index + 1), 0);
      const averageDiffs = weightedDiffs / totalDiffs;
      sheet.appendRow([formattedDate, ...scoreNumbers, averageScore, ...diffs, averageDiffs])
    } else {
      sheet.appendRow([formattedDate, ...scoreNumbers, averageScore])
    }
  } else {
    Logger.log('Pattern not found in the HTML.');
  }
}

関数のデプロイ

スクリプトを定期的に実行するためには以下の手順で現在のバージョンのコードをデプロイする必要があります。

  1. デプロイを選択

  2. アクセスを承認

  3. 警告が出ますが「advanced」を選択

  4. 自分自身のアカウントにアクセス権を与えてください。

定期実行

定期実行を行うためにはGoogle App Scriptページで「トリガー」を設定する必要があります。

以下のように日付ベースのトリガーを設定することで毎日定時にGoogle App Scriptの関数が実行されるようになります。

Discussion