Google 应用程序脚本触发器不适用于简单的自定义函数
Google App script trigger does not work on simple custom function
我对 google 应用程序脚本很陌生,但在 javascript 和 python 方面都有一些经验。
我正在尝试 运行 一个非常简单的脚本 in this custom spreadsheet,请参阅第 1 行。
我正在使用自定义函数功能,没有部署 apps/services,我有完整的 read/write 授权。
我正在为个人项目开发一些时间转换和持续时间计算功能,同时尝试从非常简单的功能开始尝试触发器。
与触发器关联的代码确实非常简单:检查预定义单元格的值(在本例中为“A1”)和 return 它在调用函数的单元格中的值。尽可能简单,只是为了试验应用程序脚本触发器:
function zain(){
var sheet = SpreadsheetApp.getActiveSheet();
var a = sheet.getRange("A1").getValue();
return a;}
为了在 sheet 中的任何单元格发生更改时更新单元格值,我在函数“zain()”上安装了一个 onEdit() 触发器。
现在,问题是:它不起作用。触发器日志显示 onEdit() 已成功完成,但调用该函数的单元格中的值根本没有改变。它似乎只有在我重新粘贴函数或更改代码并保存时才有效。否则什么都没有。
我查看了本论坛中与触发器相关的所有可能问题,与其他情况相反,我找不到任何可行的解决方案。我检查了触发器对象的问题,传播 sheet 访问,但这些解决方案中的 none 似乎是 working/apply 我的情况。
如果有人能在这件事上提供帮助,将不胜感激。
这是一个 onEdit(e) 函数,它从 A1 中获取摄氏度并在 B1 中计算华氏度
function onEdit(e) {
const sh = e.range.getSheet();
if(sh.getName() == 'Sheet0' && e.range.columnStart == 1 && e.range.rowStart == 1 && e.value ) {
e.range.offset(0,1).setValue(e.value * (9 / 5) + 32);
}
}
function zain(a) {
return (a - 32) * 5 / 9;
}
在 C1 中放置“=zain(B1)”,然后当 B1 更改时,A1 的值应该在 C1 中结束,但不是因为 onEdit 触发器,而是因为 B1 已更改
演示:
我对 google 应用程序脚本很陌生,但在 javascript 和 python 方面都有一些经验。
我正在尝试 运行 一个非常简单的脚本 in this custom spreadsheet,请参阅第 1 行。
我正在使用自定义函数功能,没有部署 apps/services,我有完整的 read/write 授权。
我正在为个人项目开发一些时间转换和持续时间计算功能,同时尝试从非常简单的功能开始尝试触发器。
与触发器关联的代码确实非常简单:检查预定义单元格的值(在本例中为“A1”)和 return 它在调用函数的单元格中的值。尽可能简单,只是为了试验应用程序脚本触发器:
function zain(){
var sheet = SpreadsheetApp.getActiveSheet();
var a = sheet.getRange("A1").getValue();
return a;}
为了在 sheet 中的任何单元格发生更改时更新单元格值,我在函数“zain()”上安装了一个 onEdit() 触发器。
现在,问题是:它不起作用。触发器日志显示 onEdit() 已成功完成,但调用该函数的单元格中的值根本没有改变。它似乎只有在我重新粘贴函数或更改代码并保存时才有效。否则什么都没有。
我查看了本论坛中与触发器相关的所有可能问题,与其他情况相反,我找不到任何可行的解决方案。我检查了触发器对象的问题,传播 sheet 访问,但这些解决方案中的 none 似乎是 working/apply 我的情况。
如果有人能在这件事上提供帮助,将不胜感激。
这是一个 onEdit(e) 函数,它从 A1 中获取摄氏度并在 B1 中计算华氏度
function onEdit(e) {
const sh = e.range.getSheet();
if(sh.getName() == 'Sheet0' && e.range.columnStart == 1 && e.range.rowStart == 1 && e.value ) {
e.range.offset(0,1).setValue(e.value * (9 / 5) + 32);
}
}
function zain(a) {
return (a - 32) * 5 / 9;
}
在 C1 中放置“=zain(B1)”,然后当 B1 更改时,A1 的值应该在 C1 中结束,但不是因为 onEdit 触发器,而是因为 B1 已更改
演示: