无Sheet3编辑权限时,如何实现Sheet1脚本操作及onEdit触发?
问题解决方案
问题1:让用户A使用Sheet1的按钮编辑Sheet3(替代Web App的更优方案)
直接用以管理员身份运行的可安装触发器绑定按钮,无需部署Web App,步骤如下:
- 先编写操作Sheet3的函数(示例):
function editSheet3ByButton() { const sheet3 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet3"); // 这里写入你的Sheet3编辑逻辑,比如修改单元格内容、调整格式等 sheet3.getRange("A1").setValue("用户A通过按钮触发的Sheet3编辑"); }
- 创建可安装触发器:
- 打开脚本编辑器,点击左侧「触发器」图标,选择「添加触发器」。
- 函数选
editSheet3ByButton,事件源选「电子表格」,事件类型选「 onClick」(对应Sheet里的绘图按钮),运行身份选「以我(管理员)的身份运行」。 - 完成授权后,回到Sheet1把按钮关联到这个函数。用户A点击按钮时,函数会以管理员权限执行,直接绕过用户A的Sheet3编辑限制。
问题2:用户A编辑Sheet1时触发对Sheet3的编辑
简单触发器onEdit(e)以当前用户身份运行,无法突破权限限制,需替换为可安装的编辑触发器,步骤如下:
- 编写触发处理函数(示例):
function handleSheet1Edit(e) { const editedSheetName = e.range.getSheet().getName(); // 只处理Sheet1的编辑操作 if (editedSheetName !== "Sheet1") return; const sheet3 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet3"); // 写入Sheet3的编辑逻辑,比如同步Sheet1的编辑内容 sheet3.getRange("B1").setValue(`用户A编辑了Sheet1的${e.range.getA1Notation()}单元格`); }
- 创建可安装触发器:
- 打开脚本编辑器的「触发器」面板,点击「添加触发器」。
- 函数选
handleSheet1Edit,事件源选「电子表格」,事件类型选「编辑时」,运行身份选「以我(管理员)的身份运行」。 - 完成授权后,用户A编辑Sheet1时,触发器会自动以管理员权限执行
handleSheet1Edit函数,实现对Sheet3的编辑操作。
内容的提问来源于stack exchange,提问作者dan
相关产品推荐
相关产品推荐

