【问题标题】:GAS "On edit" trigger not running when edited from API从 API 编辑时,GAS“编辑时”触发器未运行
【发布时间】:2020-03-30 08:30:36
【问题描述】:

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

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

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

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

e 对象是 json 中的 enum,描述为 here

【问题讨论】:

  • 不幸的是,在当前阶段,这是谷歌方面的规范。那么,作为几种解决方法之一,当您在脚本中请求 Sheets API 时,如何使用 Web Apps 和/或 Apps Script API 运行 Google Apps Script 的功能?
  • @Tanaike 谢谢,我不知道我可以远程运行 Apps 脚本功能。每当我从 API 修改某些内容时,我都会尝试这样做。谢谢!
  • 感谢您的回复。您已经使用过 Sheets API。从这种情况来看,我认为使用 Web Apps 运行 Google Apps Script 的功能很容易实现到您当前的脚本中。当您的问题解决后,您能否将其发布为答案?我认为您的问题和答案对其他用户也很有用。当您想查看更多Web Apps信息时,thisthis怎么样?
  • 我可以理解我的建议不适合TheMaster's answer。这是因为我的技术不好。对此我深表歉意。
  • 有新问题吗?最好在新帖子中提出后续问题。

标签: google-apps-script google-sheets google-sheets-api


【解决方案1】:

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

【讨论】:

  • 我从未测试过这种情况下的 OnChange 事件触发器,它使用 Sheets API 将值放入单元格。我可以从你的回答中获得新的信息。非常感谢。
  • @Tanaike 谢谢。我测试过,它有效。我相信我首先从@Serge insas 的评论中了解到这是一种可能性。另外,这就是我所说的here
  • @TheMaster 谢谢,我确实看到 OnChange 正在被触发,但我看不到如何访问更改的数据。你说的是“.getActiveRange()”,但在函数中我只得到一个“authMode”枚举,就像这里所说的那样:developers.google.com/apps-script/guides/triggers/events#change
  • 我在活动工作表上尝试了“.getActiveRange()”,但它返回了一个空对象。
  • @Cauthon range 将是一个空对象。试试SpreadsheetApp.getActiveRange().getA1Notation()
【解决方案2】:

正如您在Trigger Restrictions 中看到的那样:

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

如果您想将脚本部署为 Tanaike 提到的 Web 应用程序,您可能需要查看documentation

【讨论】:

  • 我可以理解我的建议不适合TheMaster's answer。这是因为我的技术不好。对此我深表歉意。
猜你喜欢
  • 2011-10-07
  • 1970-01-01
  • 2020-05-19
  • 2014-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-31
  • 1970-01-01
相关资源
最近更新 更多