特定のFacebookページの現在のいいね数を検索するカスタム関数があります。また、Facebookクエリ関数を含むセルをコピーして貼り付けることになっている、トリガーによって1日1回実行されるように設定されたカスタム関数もあります。これにより、1)日付と2)いいねの数を、新しい日ごとに更新する2つの列に入れることができます。1日のいいねの数が現在のいいねの数に自動的に再計算されないように、1日が終わる前に値をコピーして貼り付ける必要があります。
私が抱えている問題は、数式のコピーと貼り付けと値のコピーと貼り付けの間にあります。「thinking...」という値を貼り付け続けているため、数式の読み込みが十分に速くないようです。Utilities.Sleep()関数を試して、値をコピーして貼り付ける前にスクリプトを一時停止しましたが、問題が解決しないようです。両方のカスタム関数を以下に示します。何かアドバイス?
function FBlikes(url) {
var jsondata = UrlFetchApp.fetch("https://graph.facebook.com/"+url);
var object = Utilities.jsonParse(jsondata.getContentText());
return object.likes; //returns the number of "likes"
}
//pastes FB likes
function updateFbLikes() {
var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Like History");
var rangeToCopy = s.getRange("A2:E2"); //sets second line as the range to be copied
var range = s.setActiveCell("A331");
var notLastRow = true;
while(notLastRow){ //finds last row
if(range.getRow() == s.getLastRow()){
notLastRow = false;
s.insertRowAfter(s.getLastRow());
}
range = range.offset(1, 0);
}
rangeToCopy.copyTo(range); // Paste the data
range = range.offset(0, 0, 1, 5); //grab the whole new pasted row
Utilities.sleep(10000); //slowdown so data will load before pasting values
range.copyValuesToRange(s, range.getColumn(), range.getColumn()+4, range.getRow(), range.getRow()); //paste values
}