コンテンツへスキップ

アプリの★レーティングをスプレッドシートで取得する方法

AppStoreで配信されているアプリは、iTunes APIを使い、様々な情報を呼び出せます。元々はiTunesで音楽配信している楽曲の情報を提供するためのAPIを、そのままiOS向けに拡張して提供しているみたいです。

今回もGoogle App Scriptを活用して、スプレッドシートにデータを書き込むスクリプトを組んでいきます。
自社アプリのみならず、競合の定点観測にも役立ちます!

なお、APIの仕様により、過去日の情報は取得出来ません。。。
アプリ市場分析ツールの利用をおすすめします!
https://www.appannie.com/jp/

完成イメージ

A列に管理用の名前を記入、B列に”iTunes ID”を入力

C列以降
・アイコン
・ストア配信名
・リリース日
・平均レーティング
・最新アプリバージョン
・最新バージョン配信開始日
を書き込みます。

最終完成版

function AppDescription() {
  
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("AppList");
  var app_list = sheet.getRange(2,1,sheet.getLastRow()-1,2).getValues();
  var clearData = sheet.getRange(2,1,sheet.getLastRow()-1,sheet.getLastColumn()).clearContent();
  
  for(i = 0; i < app_list.length; i++){
    
    var app_name = app_list[i][0];
    var itunes_id = app_list[i][1].toString();
    var dataDateTime = new Date();
    var response = UrlFetchApp.fetch('https://itunes.apple.com/lookup?id='+itunes_id+'&country=JP')
    var ios_data = JSON.parse(response);
    
    var results = ios_data.results[0];
    var trackName = results.trackName;
    var releaseDate = results.releaseDate;
    var averageUserRating = results.averageUserRating;
    var version = results.version;
    var currentVersionReleaseDate = results.currentVersionReleaseDate;
    var artworkUrl100 = results.artworkUrl100;
    var icon = '=image("'+artworkUrl100+'",1)';
    
    var data = [app_name,itunes_id,icon,trackName,releaseDate,averageUserRating, version, currentVersionReleaseDate];
    
    sheet.appendRow(data);
    
  }
  sheet.setRowHeights(2,sheet.getMaxRows()-1,70);
}

取得するアプリの指定

まずはアプリの”iTunes ID”を調べます。
今回は、「Google アプリ」を例にしていきます。
WEBブラウザでApp Storeを開きます。
*この時、PC版で開いてください。iPhoneで開くと、AppStoreアプリが起動してしまい、IDが確認できません!

アプリのURL末尾”id284815942″が”iTunes ID”です。
https://apps.apple.com/jp/app/google-%E3%82%A2%E3%83%97%E3%83%AA/id284815942

iTunes IDの数字をスプレッドシートB列にコピペします。

スクリプトの作成

では、スクリプトを組んでいきます。今回はこんな構成です。

  1. スプレッドシートB列から”iTunes ID”を読み込み
  2. iTunes APIにリクエスト
  3. 返ってくるデータ(JSON)を展開し必要なデータを読み込む
  4. スプレッドシートの指定した列に書き込み
  5. スプレッドシートの調整

スプレッドシートB列から”iTunes ID”を読み込み

Google App Scriptを使う最大のメリットは、スプレッドシートをフル活用できることだと個人的に思っています。
今回は、

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("AppList"); //シート"AppList"を名前指定
  var app_list = sheet.getRange(2,1,sheet.getLastRow()-1,2).getValues(); //記入したアプリのiTunes ID全てを丸っと取得
  var clearData = sheet.getRange(2,1,sheet.getLastRow()-1,sheet.getLastColumn()).clearContent(); //2列目以降を一旦削除

スプレッドシートに入力したiTunes ID全てを”getValues()”で取得しています。
“getValues”で取得すると、階層データで返ってくるので、この後のループ処理に便利です。
“clearContent()”で2列目を以降を一旦削除しています。これは、iTunes APIから取得したデータと一緒に戻してあげることにより、スクリプトの処理を減らしています。

iTunes APIにリクエスト

iTunes APIは”https://itunes.apple.com/lookup?”から始まります。
・iTunes ID
・配信国(今回は日本で固定)
をURLパラメータに渡してgetリクエストをします。
*認証情報は必要ありません。

for(i = 0; i < app_list.length; i++){
    
    var app_name = app_list[i][0];
    var itunes_id = app_list[i][1].toString();
    var url = 'https://itunes.apple.com/lookup?id='+itunes_id+'&country=JP'
    var response = UrlFetchApp.fetch(url);
}

前項で定義した’app_list’ オブジェクトから、”app_name”と”itunes_id”を分解。
Google App Scriptでは、UrlFetchApp(‘url’) を使うと、指定のURLにリクエストを投げることが出来ます。
*今回はgetリクエスト(デフォルト)なので活用していませんが、オプションを使うとpostリクエストも出来ます。javascriptでいう、cron的なイメージです。。。!

返ってくるデータ(JSON)を展開し必要なデータを読み込む

データがJSONで返ってくるので、必要なデータをピックアップしていきます。


    var ios_data = JSON.parse(response);
    
    var results = ios_data.results[0];
    var trackName = results.trackName;
    var releaseDate = results.releaseDate;
    var averageUserRating = results.averageUserRating;
    var version = results.version;
    var currentVersionReleaseDate = results.currentVersionReleaseDate;
    var artworkUrl100 = results.artworkUrl100;
    var icon = '=image("'+artworkUrl100+'",1)';
}

UrlFetchAppで取得したデータはオブジェクトのままなので、JSON.parse(data) を活用し、JSONにパースしてあげます。
パースした結果、今回必要なデータは”results”配下に入っています。
var results = ios_data.results[0]; で、再定義。

results.”キー名” で値が返ってきます。

・ストア配信名
・リリース日
・平均レーティング
・最新アプリバージョン
・最新バージョン配信開始日

アイコンは、今回スプレッドシートのセルの中に表示させたいのですが、リファレンスに該当するメソッドが見当たらず…。
苦肉の策として、スプレッドシートのimage関数を使いました。笑
image関数は、引数1に画像URLを入れるとセルの中に画像を表示させてくれる関数です。

‘=image(“‘+artworkUrl100+'”,1)’;

スプレッドシートの指定した列に書き込み

取得した情報一式を、スプレッドシートに書き込みます。

    var data = [app_name,itunes_id,icon,trackName,releaseDate,averageUserRating, version, currentVersionReleaseDate];
    
    sheet.appendRow(data);

“appendRow(data)”は、シートの最終行に追記をしてくれるメソッドです。
”data”には、スプレッドシートA列から順に、書き込みたいデータを一つずつ格納していきます。

スプレッドシートの調整

ここまでの処理を、for loopを使って、記載してあるiTunes IDの情報を全て取得するまで実行します。
そして最後に、スプレッドシートの微調整。

sheet.setRowHeights(2,sheet.getMaxRows()-1,70);

アプリアイコンの画像を入れました。
image関数のオプション”1″は、セルの高さに合わせて表示サイズを変更してくれます。
これを綺麗に表示するべく、”setRowHeights”メソッドで、高さを70pxに指定しています。

以上で、完成です。
スクリプトを実行してみてください。スプレッドシートに情報が書き込まれます。

iTunes API リファレンス
https://affiliate.itunes.apple.com/resources/documentation/itunes-store-web-service-search-api/