如何不使用SpreadsheetApp类,用绘图按钮操作其所在表格?
解决方案说明
核心限制
绘图按钮点击不会触发selectionChange或onEdit这类简单触发器,也不会自动传递包含来源信息的事件对象。简单触发器仅针对单元格的编辑、选择操作生效,绘图触发的是自定义函数调用,没有默认的事件参数注入。
无授权实现方案(推荐)
如果要完全避免授权,建议改用单元格按钮+onEdit简单触发器的方案,具体步骤:
- 在目标表格的指定位置(比如A1单元格)设置按钮样式(比如填充颜色+文字),可以用数据验证设置为“仅从列表中选择”来模拟按钮点击效果。
- 编写
onEdit函数:
function onEdit(e) { // 判断是否点击了指定按钮单元格(示例为A1) if (e.range.getA1Notation() === "A1") { var sheet = e.source.getActiveSheet(); sheet.insertRowBefore(2); // 可选:清除单元格内容,还原按钮状态 e.range.clearContent(); } }
这个函数属于简单触发器,无需授权,运行时会自动获取事件对象e,通过e.source.getActiveSheet()直接获取操作所在的表格,完全符合需求。
绘图按钮的现状
如果坚持使用绘图按钮,目前没有无授权的方法获取其所在表格。因为任何获取绘图位置或当前活动表格的操作都需要调用SpreadsheetApp类的方法,而只要调用该类的方法,就必须申请授权,无法绕过。
内容的提问来源于stack exchange,提问作者Ian Wahlquist
相关产品推荐
相关产品推荐

