当前位置: 首页 > 知识库问答 >
问题:

从API编辑时,GAS“On edit”触发器未运行

狄飞尘
2023-03-14

我想知道是否有人遇到了这个问题,并想到了一个不太糟糕的解决方法。

我在Google电子表格上有一个“编辑时”配置的触发器,如果从电子表格本身手动(或通过公式)进行编辑,它可以正常工作。但是,如果我从Sheets API v4外部修改单元格,该单元格会被更改,但不会触发该功能。我是否遗漏了什么,或者Google根本不支持在更改来自“外部”时触发?

编辑:根据@TheMaster的建议,我写道:

function test_on_change(e){
  console.log("Changed");
  console.log(SpreadsheetApp.getActiveRange().getA1Notation());
}

e对象是此处描述的enumjson

共有2个答案

秦浩漫
2023-03-14

正如您在触发器限制中所读到的:

脚本执行和API请求不会导致触发器运行。例如,调用范围。编辑单元格的setValue()不会导致电子表格的OneEdit触发器运行。

如果您想像Tanaike提到的那样将脚本部署为Web应用程序,您可能需要检查文档。

邵畅
2023-03-14

onChange可安装触发器适用于从工作表api进行的编辑。可以使用. getActiveRange()调用获取编辑的范围。

 类似资料:
  • 我是编程新手,所以请耐心听我说。我正在编写一个脚本,除其他外,在编辑时获取单元格值,然后在其他各种范围内的一系列单元格下划线。给定的单元格上有验证,因此用户只能从下拉框的一系列选项中进行选择。 据我所知,验证函数工作正常,但是当我通过选择一个下拉框选项来编辑指定的单元格时,什么都不会发生。我需要调用函数吗?我已经阅读了api的参考资料,并在stackoverflow和网络上搜索了帮助,但是我被卡住

  • 我正在我的网站上使用Ace编辑器(到目前为止已经很棒了!)。我需要捕捉编辑更改的每一个时刻的一些文本。我给编辑器的id是“ACE_JavaScript_Editor”。当我使用: 每当我向编辑器添加文本时,它就会激发,但当我在编辑器中删除文本时,它不会激发。对于一个看似简单的问题,我还没有找到一个优雅的解决方案。根据我的经验和我在网上读到的东西,“KeyUp”和“KeyDown”在Ace edit

  • 我很难找到关于如何设置onEdit触发器的好资源。我有一个只想在编辑特定工作表时运行的函数。例如,假设我有表1、表2、表3、表4、表5。我的脚本从工作表2、3、4中提取数据并填充工作表1。我只希望在有人编辑工作表2、3或4时运行脚本。如何设置此触发器?

  • 因此,我编写了一个gs函数,当有人在工作表中插入新行时,它会发送一封电子邮件。当用户手动插入数据时,它可以正常工作,但是该工作表也被通过API插入新行的服务帐户使用,在这种情况下不会触发编辑事件。 这是我正在使用的触发器 我作为表单的所有者创建了脚本和触发器,但这并没有解决任何问题,所以我没有主意了。

  • 我的sonarQube覆盖测试检测到该代码的捕获块在测试期间从未到达 代码: 我的静态函数ConvertFileToByte()可以抛出一个IOExctive。 相关测试: 我认为问题来自这样一个事实,即“thenThrow”函数是在执行之后完成的,因此永远不会到达catch块。我试图将调用返回与分配分开,但它从未在测试中触发catch函数,并根据sonar添加代码气味。 有什么想法和建议让这个测

  • 问题内容: 我正在尝试创建一些MySQL代码,这些代码将从触发器中调用Java程序。 这是我到目前为止的内容: 然后,触发内容将调用Java程序。这可能吗? 问题答案: 一个直接的答案:不,您不能从mysql触发器调用Java方法。如果您有oracle数据库,则可以,但没有mysql。 做你想用mysql做的你可以 使更新数据库的代码也通知Swing应用程序。或者你可以 使触发器在单独的表中累积有