【发布时间】:2021-04-22 21:24:54
【问题描述】:
我正在使用自定义函数来提取 EVE Online 的价格数据,我只希望该函数在特定单元格更改时更新。相反,它每 10 到 20 分钟更新一次,这消耗了我每天的大量 URL 提取配额。
查看下方,您可以看到主要功能位于标有“仓库库存”的页面中。它提取“项目”列中项目的所有价格数据。单元格使用自定义函数刷新,该函数更改实用程序表中的单元格 B4。当该单元格更改时,由于 IF/THEN 语句,它会更新自定义函数中的值。最后将价格加载到主工作表中并按“产品”列排序。
我还重新计算了“更改时”并关闭了迭代计算。
感谢您的阅读以及您能提供的任何帮助。
自定义函数为:
/**
* 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'])]));
}
【问题讨论】:
-
尝试从基于时间的触发器运行它。
-
尝试使用每月触发器,它仍然在做同样的事情。有没有办法在自定义函数中执行“return IF THEN”语句,这样它只会在满足特定条件(例如 Utility!B4 中的单元格值)时提取数据?
-
嗨。您能否准确解释您希望自定义函数何时重新计算其值?一个例子将有助于理解它。另一方面,要查看执行函数的原因,您可以在左侧边栏中查看
Executions。在那里你会看到每次执行的起源。 -
我希望函数每天刷新,并且可以选择通过单元格 Utility!B4 的内容手动刷新函数。我有另一个函数将单元格 B3 和 B4 更改为 0,休眠 3 秒,将 B3 更改回 1,再休眠 3 秒,将 B4 更改回 1。因此,我们使用 IF THEN 语句的工作表中的其他函数是所有这些都由这 2 个来回变化的单元格更新。
标签: javascript json google-apps-script google-sheets