如何用AppsScript获取Google Sheets内被点击按钮的名称或ID
Google Sheets按钮点击识别方案
Google Sheets中插入的绘图类按钮(最常用的按钮实现方式)点击触发的回调函数默认无法直接获取到按钮的内置ID或名称,但可以通过以下两种方案实现多按钮绑定同一个通用函数、且识别触发源的需求。
方案1:绑定脚本时传入固定标识(最简便,推荐)
你可以在给按钮分配脚本时直接给函数传入固定参数,不同按钮传入不同的标识值即可区分:
- 先编写通用处理函数,预留参数位接收按钮标识:
// 通用处理函数,buttonId为传入的按钮标识 function handleButtonClick(buttonId) { switch(buttonId) { case "export": // 导出按钮逻辑 SpreadsheetApp.getUi().alert("触发了导出按钮"); break; case "clear": // 清空按钮逻辑 SpreadsheetApp.getUi().alert("触发了清空按钮"); break; default: SpreadsheetApp.getUi().alert("未知按钮触发"); } }
- 右键表格中的按钮,点击三个点的更多选项,选择「分配脚本」
- 在弹出的输入框中不要只填写函数名,按照
函数名("按钮标识")的格式填写,比如导出按钮填handleButtonClick("export"),清空按钮填handleButtonClick("clear")即可。
注意:标识需要用英文双引号包裹,不要添加多余空格,标识可以自定义为字符串或数字。
方案2:通过按钮固定位置关联标识
如果你的按钮位置不会变动,也可以在通用函数中关联按钮所在位置对应的标识:
- 提前创建一个配置区域(可以隐藏),记录每个按钮左上角所在单元格对应的标识,比如A1单元格上方的按钮对应标识export,B1单元格上方的按钮对应标识clear
- 通用函数中通过
SpreadsheetApp.getActiveSpreadsheet().getDrawings()获取所有绘图,遍历每个绘图的getContainerInfo().getAnchorColumn()和getAnchorRow()获取按钮锚定的单元格位置,匹配对应标识即可。
注意:该方案仅适合按钮位置固定不会被移动的场景。
避坑提示
- 不要尝试在绘图按钮的回调函数中获取事件对象
e,Google Apps Script针对该触发场景不会传入任何事件参数,无法直接读取按钮的内置属性。 - 方案1中传入的参数仅支持固定字面量,不支持动态变量,如果需要动态参数,可以把参数值提前存入隐藏单元格,函数执行时读取对应单元格值即可。
内容的提问来源于stack exchange,提问作者ExecAssa
相关产品推荐
相关产品推荐

