json - 自动更新 ImportJSON

标签 json google-apps-script google-sheets auto-update custom-function

我通过 following this sweet Medium tutorial 设置将 JSON 导入 Google 电子表格.

它做得很好 - 接受这个 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),因为这对我来说非常重要。

最佳答案

正如 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 - 自动更新 ImportJSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32010880/

相关文章:

json - 在模式中建模一对一关系的方法?

python - 将多嵌套的 dict/json 加载到 pandas 中

javascript - AmplitudeJS setTimeout()与JSON回调

javascript - 如何使用 Google Sheets Macros 从一张工作表复制值并将它们粘贴到另一张工作表中?

javascript - 为什么所有字段在 Data Studio 中都显示为维度?

javascript - 如何查找重复项 - 通过引用第一列?

jquery - 通过 Sinatra Controller 根据 Ajax 请求将 haml View 加载到布局中

javascript - 尝试使用 Google 脚本从 Google 表格中获取数据并显示在具有水平标签的网页上

javascript - 更新并插入数据而不是完全替换

google-apps-script - getA1Notation 脚本始终返回 A1 作为事件单元格或选择