2014-11-04 132 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