Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 自定义函数和重新计算_Google Apps Script_Google Sheets_Custom Function - Fatal编程技术网

Google apps script 自定义函数和重新计算

Google apps script 自定义函数和重新计算,google-apps-script,google-sheets,custom-function,Google Apps Script,Google Sheets,Custom Function,我有一个自定义函数,它接受三个范围名称作为输入参数。当这些范围内的单元格值发生变化时,函数输出保持不变。这是该平台的一个“功能” 有没有合适的方法(到目前为止)让谷歌表单中的自定义函数动态地重新计算?我知道人们已经尝试将now()添加为参数,该参数用于不考虑需要而不断重新计算。(现在被新的表单阻止)有人找到了满意的解决方案吗?让自定义函数重新计算的正确方法是更改它的参数。关于使用NOW()和其他类似的内置函数作为自定义函数的参数,请参见 自定义函数参数必须为。也就是说,内置的 电子表格函数,每次

我有一个自定义函数,它接受三个范围名称作为输入参数。当这些范围内的单元格值发生变化时,函数输出保持不变。这是该平台的一个“功能”


有没有合适的方法(到目前为止)让谷歌表单中的自定义函数动态地重新计算?我知道人们已经尝试将
now()
添加为参数,该参数用于不考虑需要而不断重新计算。(现在被新的表单阻止)有人找到了满意的解决方案吗?

让自定义函数重新计算的正确方法是更改它的参数。关于使用NOW()和其他类似的内置函数作为自定义函数的参数,请参见

自定义函数参数必须为。也就是说,内置的 电子表格函数,每次使用时返回不同的结果 calculate-例如NOW()或RAND()-不允许作为 自定义函数。如果自定义函数尝试返回基于 在其中一个易失性内置函数上,它将显示加载。。。 无限期

从a到这个答案:

事实上,这将显示一个“错误”,而不是“加载…”!,不允许此函数引用NOW()、RAND()或RANDBETWEEN()的单元格

问题是:-

电子表格单元格上的自定义脚本只有在单元格上定义的自定义函数的参数已更改或已被操作时才会自动执行。如果它们保持不变,则从缓存中驱动早期结果

可能的解决办法:

A)

显然,您可以对任何单元格使用Now(),然后将该单元格传递给函数参数。确保每分钟更改一次电子表格设置->计算->一次更改。 (这将每分钟更改函数的参数,因此将执行脚本)

更新后的电子表格似乎不允许使用Now()或Rand()之类的 要间接/直接传递给自定义的函数 功能

B)

添加一个“刷新”菜单项,然后可能转到脚本并定义一个函数,该函数在单击“刷新”菜单时更改单元格的值。将该值作为参数传递给正在执行脚本的函数

C)

转到脚本并创建一个函数。让我们假设updateCellValue()。现在在这里定义相同的逻辑,其目的是改变单元格的值

示例:
SpreadsheetApp.getActiveSpreadsheet().getRange('A1').setValue(新日期().toTimeString())

现在转到编辑->当前项目的触发器,并创建一个触发器,该触发器将在每个自定义定义的时间限制后触发您的函数(updateCellValue)。这将执行与解决方案B相同的操作,但您不必单击菜单的刷新按钮

看起来有点像黑客,但可能我觉得这是目前唯一的解决办法 为自定义定义的函数(如获取数据)更新电子表格 动态地从服务器中删除

事实上,这将显示一个
#错误,而不是“加载…”,此函数不允许使用NOW()、RAND()或RANDBETWEEN()引用单元格谢谢(选项C)!我试过了,但它抹掉了我的日期格式(我需要一个特定的模式)。您知道我如何维护格式并只更新值吗?