如何等待HTTP请求响应

时间:2013-04-26 18:16:23

标签: google-apps-script

我有一个请求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;
}

提前致谢

2 个答案:

答案 0 :(得分:0)

根据文档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++;
   }

答案 1 :(得分:0)

onEdit()是一个简单的触发器,对简单触发器中的操作有限制。

要解决您的问题,请执行以下操作 一个。将您的函数重命名为其他内容,例如onEdit1()
湾在脚本编辑器中,单击“资源” - >当前项目的触发器并添加指向此功能的新编辑触发器。

如果需要,授权你的脚本,你应该好好去