我设置了following this sweet Medium tutorial将JSON导入Google Spreadsheets。
它做得很好 - 接受这个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}
]
并将其转换为:
但是,正如您所看到的,此API每天都会更新。因此,当我打开工作表时,我希望这个API调用能够刷新 - 不仅仅是在编辑单元格时。
我researched a ton,还尝试添加触发器,但到目前为止我的尝试都失败了。 这不应该是这么难...任何想法?我错过了什么吗?
我还会添加&奖励赏金(50),因为这对我来说非常重要。
答案 0 :(得分:3)
解决方案是在EugZol指出的URL中添加一个参数。但是,它没有通过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分钟执行一次 - 我假设实施了时间限制 - 但在我的情况下,这完全没问题。
答案 1 :(得分:1)
常规缓存清除URL参数技术将在此处起作用:
Error on line 43 in C:\Windows\TEMP\fxbundler8328922406343131203\images\win-exe.image\MyProgram.iss: Value of [Setup] section directive "SignTool" is invalid.
Compile aborted.
这会将=ImportJSON(CONCATENATE("http://dwh-platogo.herokuapp.com/q/zn4m?", YEAR(NOW()),MONTH(NOW()),DAY(NOW())))
(今天是8月17日)参数添加到网址,从而阻止Google对其进行缓存(它将每天更新)。
您还可以添加当前小时以强制它每小时更新一次。