繁体   English   中英

自定义 Google Sheet Function 无任何原因更新

[英]Custom Google Sheet Function Updating Without Any Cause

我正在使用自定义 function 来提取 EVE Online 的价格数据,我只希望 function 在特定单元格更改时更新。 相反,它每 10 到 20 分钟更新一次,这占用了我每天大量的 URL 提取配额。

往下看,您可以看到主要的 function 位于标有“仓库库存”的页面中。 它提取“项目”列中项目的所有价格数据。 该单元格使用自定义 function 刷新,该自定义 function 会更改实用程序表中的单元格 B4。 当该单元格更改时,由于 IF/THEN 语句,它会更新自定义 function 中的值。 最后,价格被加载到主工作表中,并按“产品”列排序。

我还重新计算了“更改时”并关闭了迭代计算。

感谢您的阅读以及您可以提供的任何帮助。

定制的 function 为:

    /**
* Query's Fuzz market API for the given types
* @param {range} A vertical range of type_ids.
* @return maxBuy and minSell for each type_id
* @customfunction
*/
function fuzzApiPriceData(type_ids) {
  if (!type_ids) throw 'type_ids is required';
  const ids = Array.isArray(type_ids) ? type_ids.map(id => id[0]) : [type_ids];
  const fuzz_price_data = JSON.parse(UrlFetchApp.fetch(`https://market.fuzzwork.co.uk/aggregates/?station=60008494&types=${ids.join(',')}`));
  return [['minSell', 'maxBuy']].concat(type_ids.map(type_id => [parseFloat(fuzz_price_data[type_id]['sell']['min']), parseFloat(fuzz_price_data[type_id]['buy']['max'])]));
}

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

我通常为此做的是:在单元格中放置一个复选框。 然后,在调用您的自定义 function 时,添加对该单元格的额外引用,即使该参数未包含在您的自定义 function 中。 每次您切换真/假时,您的自定义 function 将被重新激活。 然后,您还可以定义另一个 function 并使用仅更改 true/false 值的触发器。 这是工作表“数据”单元格 A3 中的一个示例:即使自定义 function 仅考虑第一个和第二个参数,function 也是带有 A1 的getDataJSON(C1,A2:U2,A1) https://docs.google.com/spreadsheets/d/1DN0Gfim0LC098zVgrUpt2crPWUn4pWfZnCpuuL1ZiMs/edit?usp=sharing

我认为这里有一个相当基本的误解。

“自定义函数”旨在写入工作表上的单元格 它们天生就设计为始终运行,不断更新。

如果您尝试运行自定义脚本,请从脚本编辑器本身执行此操作,您甚至不会在 ALL的单元格中编写 function 。

我假设您没有编写您正在使用的“自定义函数”(?)所以将其转换为写入工作表上某个位置的脚本会有点困难(但并非不可能。)有一段时间,但您可能会更多地研究设计为在单元格中执行的自定义函数之间的区别。 以及设计为在时间触发器上运行的脚本。

关于你的回答:

我希望 function 每天刷新,并且可以选择通过单元格 Utility!B4 的内容手动刷新 function

我建议您使用Installable Triggers

  1. 时间驱动触发器:它可以在每天的特定时间执行一个 function。
  2. 安装的编辑触发器:当特定单元格中的某个值发生变化时,它可以执行 function。

但是,如果您想手动执行 function,我建议您插入drawing为其分配 function

参考

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM