yumeです。スマホアプリの設計も担当してます。
最近はbotに興味があります。
響きと存在がかわいいですよね。もっとたくさん働いてほしいです。
ということで、
アプリストアに新しいレビューが投稿されたら
その内容をChatworkに通知する
使ったもの
- Google Apps Script
- Google スプレッドシート
- SearchMan API(無料アカウント)
- Zapier(無料アカウント)
developer.searchman.com
Zapier | The easiest way to automate your work
流れ
SearchMan APIに登録する
ストアレビューの取得ですが、以下の理由からこのAPIを使うことにしました。
- iTunesConnectのRSSは、Zapierでうまくparseできない
- GooglePlayは調べたけどよくわからん
→Google Play Android Developer APIを使えばいいのかと思いましたが、
情報が少なかったので途中でめげました
てそもそもiOSとAndroidで別の処理するのめんどくさい。
そこまで時間をかけたくもなかった。
「新着レビューがついたらメール通知」って機能、意外とないんですね。
SearchMan APIは、無料版のアカウントで月100リクエストいけるということだったので、
4日おきに1回リクエストすることにしました。
登録したり試しにAPI叩いたりするところは結構すんなり通りました٩(๑′∀ ‵๑)۶
GAS書いてみる
Javascriptはいつも雰囲気でなんとかしている初心者ですが、
LINEbotをGASで作って以降、GASは好きになってきました。
ちょっとしたスクリプト書くのは全部GASでやってしまいそうです。
エラー処理してないし、穴はいっぱいありますが、動くことは動きます。
function getAppliReview() { var platform = '【iosまたはandroid】', appId = '【アプリID】'; return searchmanApiCall(platform,appId); } function searchmanApiCall(platform,appId) { //SerchManのAPIにリクエストをする var baseUrl = 'http://api.searchman.io/v1/', APIKey = '【SearchManのマイページで確認したAPIKey】'; //記録用のスプレッドシートの準備 var sheet = SpreadsheetApp.openById('【記録用スプレッドシートのID】').getSheetByName('【シート名】'); //リクエストURLの作成 var APIUrl = baseUrl + platform + '/jp/app/reviews?appId=' + appId + '&apiKey=' + APIKey; //Logger.log(APIUrl); var result = UrlFetchApp.fetch(APIUrl); //結果をparse var resjson = JSON.parse(result.getContentText()); var today = new Date(); //4日前の時間を算出 var startdate = new Date(today.getTime()-1000*60*60*24*4); for(var i=0; i<resjson.data.length; i++) { var resdata = resjson.data[i]; //レビュー投稿日時をミリ秒に変換 var reviewdate_ms = Date.parse(resdata.timestamp.replace( /-/g , '/' )); var reviewdate = new Date(reviewdate_ms); //直近4日より新しいレビューのみの処理 if(reviewdate.getTime() > startdate.getTime()){ var star = ''; //レートを星表記に変更 for(var j=0; j<resdata.rating; j++){ star += '★'; } //シートの最終行に挿入 sheet.appendRow([platform,resdata.title,star,resdata.body,resdata.author,resdata.timestamp]); } } return 0; }