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列にコピペします。
スクリプトの作成
では、スクリプトを組んでいきます。今回はこんな構成です。
- スプレッドシートB列から”iTunes ID”を読み込み
- iTunes APIにリクエスト
- 返ってくるデータ(JSON)を展開し必要なデータを読み込む
- スプレッドシートの指定した列に書き込み
- スプレッドシートの調整
スプレッドシート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/