0

我有一个请求 URL 的函数,如果我使用该函数并在其中返回,则整个 html 代码将位于函数名称请求“=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 fetch 调用是连续的,因此在读取远程 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 回答
0

onEdit() 是一个简单的触发器,您可以在简单触发器中执行的操作受到限制。

要解决您的问题,请执行以下
操作 将您的函数重命名为其他名称,例如 onEdit1()
b。在脚本编辑器中,单击 Resources --> Current project's triggers 并添加一个指向此函数的新 on edit 触发器。

如果需要,授权你的脚本,你应该很高兴

于 2013-04-27T06:24:19.277 回答