Javascript 自定义谷歌工作表功能更新没有任何原因
我正在使用一个自定义函数来获取EVE Online的价格数据,我只希望该函数在特定单元格更改时更新。取而代之的是,它每10-20分钟更新一次,这消耗了我每天获取URL的大量配额 看看下面,你可以看到主要功能是在一个页面标记为“仓库库存”。它提取“项目”列中项目的所有价格数据。该单元格使用自定义函数刷新,该函数可更改实用程序表中的单元格B4。当该单元格更改时,由于IF/THEN语句,它会更新自定义函数中的值。最后,价格被加载到主表中,并按“产品”列排序 我还关闭了“更改时”重新计算和迭代计算 感谢您的阅读和您能提供的任何帮助 自定义功能是:Javascript 自定义谷歌工作表功能更新没有任何原因,javascript,json,google-apps-script,google-sheets,Javascript,Json,Google Apps Script,Google Sheets,我正在使用一个自定义函数来获取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'])]));
}
我认为这里有一个相当基本的误解 “自定义函数”设计为在工作表的单元格中写入。它们本质上是为了随时运行,不断更新 如果您试图运行自定义脚本,可以从脚本编辑器本身执行,甚至不在单元格中编写函数 我假设您没有编写您正在使用的“自定义函数”(?),因此将其转换为在特定时间写入工作表中特定位置的脚本将有点困难(但并非不可能!)。但是,您可能会进一步研究设计用于在单元格中执行的自定义函数与设计用于在时间触发器上运行的脚本之间的差异。关于您的答案:
我希望该功能每天刷新,以及有选项手动刷新功能的内容的细胞实用程序!B4 我建议你使用:
图形
,并将其添加到其中
参考文献
getDataJSON(C1,A2:U2,A1)
尝试从基于时间的触发器运行它。尝试使用每月一次的触发器,但它仍在执行相同的操作。是否有一种方法可以在自定义函数中执行“returnif-THEN”语句,以便它仅在满足特定条件(如实用程序中的单元格值)时才会提取数据!B4?嗨。你能解释一下你希望自定义函数什么时候重新计算它的值吗?举个例子有助于理解它。另一方面,要查看函数执行的原因,可以在左侧栏中查看Executions
。在那里你会看到每次执行的起源。我希望函数每天刷新,并且可以选择通过单元格实用程序的内容手动刷新函数!B4。我有另一个功能,将单元格B3和B4更改为0,休眠3秒,将B3更改为1,再休眠3秒,将B4更改为1。因此,整个工作表中的其他函数,包括IF-THEN语句,都是通过前后变化的两个单元格来更新的。啊,是的,我有一堆自定义脚本,其中一个脚本在运行时会更改单元格的内容。我只擅长写脚本,不擅长写函数,这不是我的职责。我基本上只是想写一个函数,它不会更新,除非被迫