0

URL を要求する関数があり、その関数を return と共に使用すると、html コード全体が関数名 request "=testFormula()" のセルに表示されます。式関数を使用すると機能するのに、イベント関数を使用すると機能しないのはなぜですか?

function onEdit(event){
  testCom();
}
// This one will trigger automaticaly when you edit any cell in the sheet
function testCom(){
  var doc = SpreadsheetApp.getActiveSpreadsheet();
  doc.getRange('a1').setValue("Before fetching");
  var response = UrlFetchApp.fetch("http://www.google.com/");
  doc.getRange('a1').setValue(response);
}
// Use in a cell "=testFormula()" to run this function
function testFormula(){
 var response = UrlFetchApp.fetch("http://www.google.com/");
 return response;
}

前もって感謝します

4

2 に答える 2

1

ドキュメントhttp://goo.gl/khdkLによると、フェッチ呼び出しはシーケンシャルであるため、リモート URL が読み取られるまで次の行は実行されません。

ドキュメントの例を見ると、彼らはあなたがやろうとしていることを正確に行い、いくつかのセルに応答を示します:

       var result = UrlFetchApp.fetch("http://api.twitter.com/1/statuses/user_timeline.json",
           options);
       var o  = Utilities.jsonParse(result.getContentText());
       var doc = SpreadsheetApp.getActiveSpreadsheet();
       var cell = doc.getRange('a1');
var index = 0;
   for (var i in o) {
     var row = o[i];
     var col = 0;
     for (var j in row) {
       if (fields[j]) {
         cell.offset(index, col).setValue(row[j]);
         col++;
       }
     }
     index++;
   }
于 2013-04-26T18:38:11.460 に答える