gpt4 book ai didi

google-apps-script - 刷新 Google Sheet 中自定义函数检索到的数据

转载 作者:行者123 更新时间:2023-12-02 15:57:59 26 4
gpt4 key购买 nike

我编写了一个自定义 Google Apps 脚本,它将接收 id 并从网络服务获取信息(价格)。

我在电子表格中使用这个脚本,它工作得很好。我的问题是这些价格发生变化,而我的电子表格没有更新。

如何强制它重新运行脚本并更新单元格(无需手动检查每个单元格)?

最佳答案

好吧,看来我的问题是谷歌的行为方式很奇怪 - 只要脚本参数相似,它就不会重新运行脚本,它使用之前运行的缓存结果。因此,它不会重新连接到 API,也不会重新获取价格,它只是返回之前缓存的脚本结果。

在此处查看更多信息(如果您受到影响,请为这些问题添加星号):

Henrique G. Abreu's answer

我的解决方案是向我的脚本添加另一个参数,但我什至不使用它。现在,当您使用与之前调用不同的参数调用该函数时,它将必须重新运行脚本,因为这些参数的结果将不在缓存中。

因此,每当我调用该函数时,对于额外参数,我都会传递“$A$1”。我还创建了一个名为刷新的菜单项,当我运行它时,它将当前日期和时间放入 A1 中,因此对使用 $A$1 作为第二个参数的脚本的所有调用都必须重新计算。这是我的脚本中的一些代码:

function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [{
name : "Refresh",
functionName : "refreshLastUpdate"
}];
sheet.addMenu("Refresh", entries);
};

function refreshLastUpdate() {
SpreadsheetApp.getActiveSpreadsheet().getRange('A1').setValue(new Date().toTimeString());
}

function getPrice(itemId, datetime) {
var headers =
{
"method" : "get",
"contentType" : "application/json",
headers : {'Cache-Control' : 'max-age=0'}
};

var jsonResponse = UrlFetchApp.fetch("http://someURL?item_id=" + itemId, headers);
var jsonObj = eval( '(' + jsonResponse + ')' );
return jsonObj.Price;
SpreadsheetApp.flush();
}

当我想将 ID 为 5 的商品的价格放入单元格中时,我使用以下公式:

=getPrice(5, $A$1)

当我想刷新价格时,只需单击“刷新”->“刷新”菜单项即可。请记住,更改 onOpen() 脚本后需要重新加载电子表格。

关于google-apps-script - 刷新 Google Sheet 中自定义函数检索到的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17341399/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com