我有一个installedOnEdit
使用触发器是因为我隐藏和取消隐藏根据条件受保护的列。现在,我已经由工作表所有者添加了触发器。
我确实复制了此电子表格并与利益相关者共享以获取意见。在制作电子表格时,脚本确实会被复制,但触发器不会。
这怎么可以installedOnEdit
也可以复制到所制作的纸张的每份副本上。
我们可以使用按钮,因此每当任何用户创建副本时,他们都必须单击该按钮来创建触发器。
或其他无需使用按钮的方式。
我相信您的目标如下。
- 您有一个 Google 电子表格。
- 您的电子表格与作为作者的用户共享。
- 您的电子表格有一个按钮,用于执行复制活动电子表格的脚本。
- 你的电子表格有一个功能
installedOnEdit
用于通过可安装的 OnEdit 触发器执行。
- 您希望用户通过单击按钮来复制活动电子表格,并且还希望自动安装 OnEdit 触发器
installedOnEdit
同时复制电子表格。
不幸的是,我不知道你复制电子表格的脚本和installedOnEdit
。因此,在这个答案中,我想解释使用一个简单的示例脚本来实现您的目标的方法。
Usage
请执行以下流程。
准备
-
请创建一个新的 Google 电子表格,并将以下脚本复制粘贴到脚本编辑器中并保存脚本。在这种情况下,您是电子表格的所有者。
// This is a simple sample script for executing by the installable OnEdit trigger.
function installedOnEdit(e) {
const { range } = e;
range.setValue(`Updated ${range.getValue()}`);
}
// It supposes that this function is run by clicking a button by a user.
function copySpreadsheet() {
const functionName = "installedOnEdit"; // This function is installed as OnEdit trigger.
const ss = SpreadsheetApp.getActiveSpreadsheet();
const copiedSpreadsheet = ss.copy("Copied_" + ss.getName());
ScriptApp.newTrigger(functionName).forSpreadsheet(copiedSpreadsheet).onEdit().create();
const html = `<a href="${copiedSpreadsheet.getUrl()}" target="_blank">Open copied Spreadsheet</a>`;
SpreadsheetApp.getUi().showModalDialog(HtmlService.createHtmlOutput(html).setWidth(300).setHeight(100), "sample");
}
-
请以作者身份与其他用户共享此电子表格。
-
请设置工作表名称。并且,请为该函数安装 OnEdit 触发器installedOnEdit
。并且,请创建一个按钮并分配函数名称copySpreadsheet
到按钮。这样,当单击此按钮时,脚本copySpreadsheet
is run.
-
作为测试,请将“sample”值放入“Sheet1”的单元格中。并且,请确认输入的“样本”值已更改为“更新样本”。至此,准备工作就完成了。
Testing
作为测试,请使用共享用户打开电子表格。并且,请单击一个按钮。这样,copySpreadsheet
正在运行。并且,复制活动电子表格并使用该函数installedOnEdit
作为 OnEdit 触发器安装。在这种情况下,复制的电子表格的所有者是单击该按钮的用户,因为当按钮运行脚本时,该脚本将以单击的用户身份运行。本方法就是利用这种情况。
当使用该方法时,获得以下结果。
重要的
-
重要的是,在这个方法中,脚本installedOnEdit
原始电子表格上的(此电子表格的所有者是您。)用作可安装的 OnEdit 触发器。所以,当你修改脚本时installedOnEdit
, installedOnEdit
复制的电子表格也发生了变化。请注意这一点。
-
这是一个用于解释此方法的简单脚本。因此,请在您的实际脚本中反映此方法。
参考
- 通过对其他用户隐藏 Google Apps 脚本,使用 OnEdit 触发器触发 Google 电子表格(作者:我) https://tanaikech.github.io/2023/01/25/using-onedit-trigger-to-google-spreadsheet-by-hiding-google-apps-script-from-other-users/
- 在服务帐户创建的 Google 电子表格上使用 OnEdit 触发器(作者:我) https://tanaikech.github.io/2023/01/25/using-onedit-trigger-on-google-spreadsheet-created-by-service-account/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)