自动更新 ImportJSON
Update ImportJSON automatically
我设置了导入 JSON 到 Google Spreadsheets following this sweet Medium tutorial。
它做得很好 - 接听这个 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 在我打开 sheet 时调用刷新 - 不仅是在编辑单元格时。
我已经 researched a ton,也尝试过添加触发器,但到目前为止我的尝试都失败了。
这不应该这么难......有什么想法吗?我错过了什么吗?
稍后我还会添加并奖励赏金 (50),因为这对我来说非常重要。
常规缓存清除 URL 参数技术将在这里起作用:
=ImportJSON(CONCATENATE("http://dwh-platogo.herokuapp.com/q/zn4m?", YEAR(NOW()),MONTH(NOW()),DAY(NOW())))
这会将 ?20150817
(因为今天是 8 月 17 日)参数添加到 URL,从而防止 Google 缓存它(它将每天更新)。
您还可以添加当前小时以强制其每小时更新一次。
正如 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 分钟执行一次 - 我假设实施了时间限制 - 但就我而言,这完全没问题。
我设置了导入 JSON 到 Google Spreadsheets following this sweet Medium tutorial。
它做得很好 - 接听这个 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 在我打开 sheet 时调用刷新 - 不仅是在编辑单元格时。
我已经 researched a ton,也尝试过添加触发器,但到目前为止我的尝试都失败了。 这不应该这么难......有什么想法吗?我错过了什么吗?
稍后我还会添加并奖励赏金 (50),因为这对我来说非常重要。
常规缓存清除 URL 参数技术将在这里起作用:
=ImportJSON(CONCATENATE("http://dwh-platogo.herokuapp.com/q/zn4m?", YEAR(NOW()),MONTH(NOW()),DAY(NOW())))
这会将 ?20150817
(因为今天是 8 月 17 日)参数添加到 URL,从而防止 Google 缓存它(它将每天更新)。
您还可以添加当前小时以强制其每小时更新一次。
正如 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 分钟执行一次 - 我假设实施了时间限制 - 但就我而言,这完全没问题。