【问题标题】:Google spreadsheet urlfetch error and updating formula errorGoogle 电子表格 urlfetch 错误和更新公式错误
【发布时间】:2014-11-04 03:16:21
【问题描述】:

我有如下的谷歌电子表格公式

function mydata(para1, para2, para3){
  var myurl = "http://someurl/data2?one="+ para1 +"&two=" + para2 + "&three="+para3;
  var result = UrlFetchApp.fetch(myurl);

  var result1 = Utilities.jsonParse(result.getContentText());
  if (result1.length === 0){
      return null;
    }else{
      return result1;
    }

}

我在我的电子表格中使用了这个公式 400 多次。问题是存在此公式的许多单元格显示错误为Error: Service invoked too many times in a short time: urlfetch. Try Utilities.sleep(1000) 这是第一个问题。 如果我编辑该公式单元格并再次单击..那么错误仍然存​​在。它应该重新加载/重新计算该公式。这是我的第二期。

许多stackoverflow 解决方案和各种博客文章都建议尝试使用Utilities.sleep(1000);但是在这里我该如何使用它?我没有运行任何循环,在每个循环上我都应该像这样等待。 那么如何在这里控制这种行为。 同样在第 2 期;我认为谷歌电子表格正在缓存结果;但我不知道如何修改/更改“onEdit”

【问题讨论】:

  • 您认为 Google 正在缓存什么“结果”?请编辑您的原始帖子并提供一个示例。
  • 结果是数字和字符串的 json 数组;例如:[["Q1", "Q2", "Q3", "Q4"]["23.2", "10.5", "15.6", "12.9"]]
  • 如果我更改参数;那么只有它会更新公式;并在这样做之后;当我定义原始参数时(恢复我的更改);它不会立即更新单元格......但经过一段时间/更多这样的试验后它正在更新......但不是立即!!!!
  • 能给个真实的网址给我们看看吗?

标签: google-apps-script google-sheets


【解决方案1】:

许多 stackoverflow 解决方案和各种博客文章都建议尝试使用 Utilities.sleep(1000);但是在这里我该如何使用呢?

在 URL 获取请求之后就可以了。即使您没有运行任何循环,也必须多次调用该函数才能让 Google 返回该错误。如果您在 onEdit 中调用该函数,那么这将导致该函数被大量调用。如果您需要帮助找出函数被大量调用的原因,请分享更多代码。

function mydata(para1, para2, para3){
  var myurl = "http://someurl/data2?one="+ para1 +"&two=" + para2 + "&three="+para3;
  var result = UrlFetchApp.fetch(myurl);
  Utilities.sleep(1000);
  var result1 = Utilities.jsonParse(result.getContentText());
  if (result1.length === 0) {
      return null;
    } else {
      return result1;
    }
}

【讨论】:

  • 我的代码就是……我不能分享我提出请求的原始 URL;我必须获得许可;如果我明白了..我会更新有问题的;但整个功能是一样的!
  • 我过去也试过你回答;问题仍然存在,代码变得非常慢。
猜你喜欢
  • 1970-01-01
  • 2016-09-06
  • 1970-01-01
  • 2018-08-27
  • 1970-01-01
  • 2012-07-22
  • 2014-11-11
  • 2015-07-23
  • 2015-05-09
相关资源
最近更新 更多