2014-11-04 129 views
0

我有谷歌电子表格公式如下谷歌电子表格网址抓取错误和更新公式错误

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);但在这里,我怎么能使用它?我没有运行任何循环,我应该在每个循环中等待。那么如何在这里控制这种行为。 同样在第二期;我认为谷歌电子表格缓存结果;但我没有得到如何修改/改变“onEdit”

+0

您认为Google会缓存什么“结果”?请编辑您的原始帖子并提供一个例子。 – 2014-11-04 06:46:22

+0

结果是json数字和字符串数组;例如:[[“Q1”,“Q2”,“Q3”,“Q4”] [“23.2”,“10.5”,“15.6”,“12.9”]]' – namit 2014-11-04 07:09:28

+0

如果我改变参数;那么只有它会更新公式;并在这样做之后;当我定义原始参数(恢复我的更改);它不会立即更新细胞......但经过一段时间/更多这样的试验后,它正在更新....但不是立即!!!! – namit 2014-11-04 07:13:19

回答

0

许多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; 
    } 
} 
+0

我的代码就是这样......我不能分享我提出请求的原始URL;我必须获得许可;如果我得到那个..我会更新有问题的;但整个功能是一样的! – namit 2014-11-04 07:05:29

+0

我也已经试过你在过去的回答;问题仍然存在,代码变得非常慢。 – namit 2014-11-04 07:07:10