首页 > 解决方案 > 更改时自动更新的自定义谷歌表格功能不会在其他人编辑时更改

问题描述

我有一个自定义函数,当对谷歌电子表格进行更改时会自动更新,但是当其他一些用户编辑工作表时,该功能对他们不起作用,我怎样才能让它为使用工作表的任何人更新。

使用此功能自动更新:

function onEdit(e) {
  SpreadsheetApp.getActiveSheet().getRange('Z1').setValue(Math.random());
}

然后传递Z1的参数。

标签: google-apps-scriptgoogle-sheetsgoogle-sheets-formula

解决方案


解释:

只需几条注释即可确保我们在同一页面上。

  • 这不是自定义函数,而是onEdit触发函数。

  • 顾名思义,它在用户更改电子表格中任何单元格的值时触发。

  • 该功能仅在用户更改单元格而不是公式或脚本时触发。

潜在问题:

  1. 确保其他用户对目标单元格具有编辑权限。如果不允许他们编辑可能是电子表格文件中的任何工作表Z1中的单元格,则该脚本将不适用于他们。您可以授予他们访问权限,或者在您可以授予他们访问权限时使脚本仅在特定工作表下工作。activeSheet

  2. 一些用户在尝试直接链接活动方法时有时会遇到问题。请参阅此处此处的参考链接,尽管我无法重现该问题,但这可能是您的情况的原因。

潜在解决方案:

请注意第一个问题。

关于第二个问题,修改你的代码如下:

function onEdit(e) {
  const active_sheet = e.range.getSheet();
  active_sheet.getRange('Z1').setValue(Math.random());
}

无论如何,这是使用onEdit触发器的推荐方法,因为您应该利用事件对象


推荐阅读