0

我正在尝试为电子表格自定义功能设置缓存,但结果似乎不一致/意外。有时我会得到缓存的结果,有时它会刷新数据。我已将超时设置为 10 秒,当我在 10 秒内刷新时,有时它会抓取新数据,有时它会缓存。即使自上次通话后等待超过 10 秒,有时我也会得到缓存的结果。为什么电子表格功能有这么多不一致?(或者我只是做错了什么?)。当我直接在实际脚本中调用该函数时,它似乎更加一致,但有时我会得到不一致/意外的结果。

function getStackOverflow(){
  var cache = CacheService.getPublicCache();
  var cached = cache.get("stackoverflow");

  if(cached != null) {
    Logger.log('this is cached');
    return 'this is cached version';
  }

  // Fetch the data and create an object.
  var result = UrlFetchApp.fetch('http://api.stackoverflow.com/1.1/tags/google-apps-script/top-answerers/all-time');
  var json = Utilities.jsonParse(result.getContentText()).top_users;

  var rows = [],data;

  for (i = 0; i < json.length; i++) {
    data = json[i].user;
    rows.push(data.display_name);
  }

  Logger.log("This is a refresh");
  cache.put("stackoverflow",JSON.stringify(rows),10);

  return rows;
}
4

1 回答 1

0

您不能使用这样的自定义功能。其记录在案。自定义函数必须是确定性的,给定相同的输入,它们始终具有相同的输出(在您的情况下没有,因为您没有传递任何参数。电子表格将记住每个输入集的值,基本上就像 yiu 没有的第二层缓存控制。

于 2013-10-11T05:06:18.963 回答