3

特定の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
}
4

1 に答える 1

0

私が正しく理解していて、あなたがやろうとしていることは、行2の結果を取得し、それらを静的な値としてページの最後に配置することです。

もしそうなら、あなたは試すかもしれません:

  1. シートの下部から未使用の行をすべて削除します
  2. 次のコードを使用します
関数updateFbLikes(){
  var s = SpreadsheetApp.getActiveSpreadsheet()。getSheetByName( "Like History");
  var valuesToCopy = s.getRange( "A2:E2")。getValues();
  s.appendRow(valuesToCopy [0]);
}

それ以上のものがあれば私に知らせてください。

于 2012-12-05T14:39:51.833 に答える