3

我設置由following this sweet Medium tutorial進口JSON到谷歌電子表格。更新ImportJSON自動

它做它的工作好 - 採取這一API調用

[ 
    {"day":"2015-08-05","new_users":103}, 
    {"day":"2015-08-06","new_users":255}, 
    {"day":"2015-08-07","new_users":203}, 
    {"day":"2015-08-08","new_users":198}, 
    {"day":"2015-08-09","new_users":273}, 
    {"day":"2015-08-10","new_users":373}, 
    {"day":"2015-08-11","new_users":189}, 
    {"day":"2015-08-12","new_users":228}, 
    {"day":"2015-08-13","new_users":167} 
] 

並將其轉變成:

enter image description here

然而,正如你可以看到,這個API獲取的每日更新。所以我想在打開表單時刷新API調用 - 不僅在編輯單元格時。

我已經researched a ton,也嘗試添加觸發器,但我嘗試到目前爲止都失敗了。 這不應該是這個難...任何想法?我錯過了什麼嗎?

我也將增加&獎勵賞金(50)lateron,因爲這是對我很重要。

+0

您可以使用[onOpen](https://)[flush](https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app?hl=en#flush()) developers.google.com/apps-script/guides/triggers/#onopen)觸發器。 –

+0

這是行不通的... –

+0

「採取這個API」鏈接返回「Heroku |沒有這樣的應用程序」 –

回答

3

的解決方案是增加一個參數,以URL作爲EugZol指出。然而,它沒有通過Google電子表格的CONCATENATE工作 - 這導致加載錯誤 - 至少對我而言。

最後,我不得不調整JavaScript函數ImportJSONAdvanced

function ImportJSONAdvanced(url, query, options, includeFunc, transformFunc) { 
    var url = url + "?" + (Math.ceil(new Date().getTime()/1000)); 
    var jsondata = UrlFetchApp.fetch(url); 
    var object = JSON.parse(jsondata.getContentText()); 

    return parseJSONObject_(object, query, options, includeFunc, transformFunc); 
} 

我加入這一行:

var url = url + "?" + (Math.ceil(new Date().getTime()/1000)); 

得到它是在current time via JavaScript,並將其附加到url - 我除以1000就並使用.ceil來獲得秒數而不是毫秒。

這樣,電子表格最後自動更新的API調用。

旁註:它每15分鐘做一次 - 我假設實施了時間限制 - 但在我的情況下,這完全沒問題。

+0

男人,但它**沒有**工作與'CONCATENATE':[截圖](https://yadi.sk/i/iAMvdXBRiWnUe)。我剛打開我的測試電子表格,並在我看到它後立即更新。 – EugZol

+0

你好,我認爲這是一個很好的解決方案 - 補充說它並不適合我 - 所以你希望別人能從你的答案中獲得更多的利益。 –

+0

那麼,鑑於電子表格是雲軟件,不太可能一個電子表格確切地做同樣的事情,並且不適用於另一個電子表格。爲什麼不提供一些用於調試目的的錯誤細節? – EugZol

1

定期的緩存清除URL參數技術將在這裏工作:

=ImportJSON(CONCATENATE("http://dwh-platogo.herokuapp.com/q/zn4m?", YEAR(NOW()),MONTH(NOW()),DAY(NOW()))) 

這將增加?20150817(因爲這是8月17日的今天)參數的URL,從而防止谷歌的緩存(它會每日更新) 。

您還可以添加當前時間,迫使它每小時更新。

+0

不用我玩了一會兒 - 沒有成功。重新打開文檔時,它會*嘗試重新調用該API,但它只返回「加載錯誤」。我總是不得不手動刷新功能才能使其工作 –

+0

但這是一個很棒的建議,讓我比以前的嘗試更進一步! –

+0

它絕對適合我。那麼,打開表單至少不會出錯。錯誤細節說的是什麼? – EugZol