2012-05-15 56 views
2

我有一個谷歌電子表格,它在許多單元格中調用用戶特定的函數。該功能獲取3-4個特定的相對較短的網頁並解析它們。這些頁面每天只更改一次,但我不知道如何強制每天僅使用一次緩存副本來獲取每個頁面的電子表格。 我相信在刷新~20次後會發生urlfetchapp錯誤。 「服務調用次數太多」。谷歌應用程序腳本:urlfetchapp - 服務調用次數過多

我試圖找到解決此問題的方法。我認爲這個錯誤是由於許多URL抓取(即使是對於同一個URL,內容不變),而不是因爲很多解析。

如果這是真的,如何減少提取次數?例如,我可以在什麼地方下載頁面並在本地解析它們?我可以在谷歌電子表格的網頁中使用某種緩存嗎?如果我將這些文件的副本保存在電子表格所在的我的谷歌驅動器中,會有幫助嗎? 我可以增加URLfetchapp的限制嗎? 有沒有其他想法?

回答

1

爲了避免類似的問題,我實施了一種解決方法。它不是很優雅,但它的工作原理。它採用使用Utilities.sleep()在一個循環:

function urlFetchWihtoutError(url) { 
    const NB_RETRY = 10; 
    var nbSecPause = 1.5; 
    var nbErr = 0; 
    while (nbErr < NB_RETRY) { 
    try { 
     if (nbErr > 0) SpreadsheetApp.getActiveSpreadsheet().toast("Here we go again."); 
     var res = UrlFetchApp.fetch(url).getContentText(); 
     return res; 
    } 
    catch (error) { 
     nbErr++; 
     SpreadsheetApp.getActiveSpreadsheet().toast("Let's pause the system during " + nbSecPause + " seconds. Loop number: " + nbErr); 
     Utilities.sleep(nbSecPause * 1000) 
     nbSecPause += 0.5; 
    } 
    } 
} 
相關問題