GASでAmazonのレビュー数を取得したい
JS/GAS ともに超初心者です。
GASを使って「Amazonの商品レビューの数を定期的に取得し、レビュー数に変化があったらメールを送る」という機能を実現したいです。
あらかじめスプレッドシートに商品名、URL、レビュー数を入力しておきます。
チェックする商品はすでにレビューが1つ以上ついているものとします。
以下のようなコードを書きましたが、うまく動くときと動かないときがあります。
ときどき取得してくるレビュー数がゼロになってしまうようで、ゼロになったとメールが送られ、スプレッドシートのレビュー欄が空白になっています。
その後正しいレビュー数を取得してまたメールが送られます。
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var product = sheet.getRange(1,1).getValue();
var URL = sheet.getRange(1,2).getValue();
var review = sheet.getRange(1,3).getValue();
var response = UrlFetchApp.fetch( URL );
var htmlstr = response.getContentText();
// レビューの数を取得
var myReg = RegExp( /(\d\d?)件のカスタマーレビュー/ );
var result = htmlstr.match(myReg);
var new_review = RegExp.$1;
// レビュー数が変化していたらメールを送る
if( new_review != review){
MailApp.sendEmail(
"*******@****.com",
model + "のレビュー数が変わりました。",
URL + "\n" + product + "のレビュー数が[" + review + "]から[" + new_review + "]に変化しました。"
);
// レビュー数を書き換える
sheet.getRange(1,3).setValue( new_review );
}
}
Amazon側のレスポンスが悪くレビュー数がきちんと取得できていないのでしょうか。
なお、実際にはforループで複数の商品をチェックしていますが、問題の解決に必要だと思うところだけを抜き出して書き直しました。
よろしくお願いします。