如何在Google Apps Script中获取自定义菜单按钮的显示值?
问题解答:Google Sheets自定义菜单点击时获取按钮显示文本
直接通过默认的菜单绑定方式,无法让触发的函数InstallFAQ1直接获取到菜单的显示文本“FAQ LVL 1”,因为菜单绑定的函数不会自动接收菜单文本作为参数。不过可以通过以下方法实现需求:
方法:通过闭包传递菜单文本
修改菜单创建代码,利用闭包给触发函数传递菜单显示文本,具体代码如下:
function onOpen(e) { const ui = SpreadsheetApp.getUi(); const wozMenu = ui.createMenu('WOZTELL'); // 封装生成菜单触发函数的工具函数 function getMenuActionHandler(menuText) { return function() { // 直接使用menuText变量,即点击的菜单显示文本 InstallFAQ1(menuText); }; } // 添加菜单项时绑定封装后的处理函数 wozMenu.addItem('FAQ LVL 1', getMenuActionHandler('FAQ LVL 1').getName()) .addToUi(); } function InstallFAQ1(menuText) { // 此处可获取点击的菜单显示文本 console.log('点击的菜单文本:', menuText); // 原有业务逻辑写在这里 }
原理说明
getMenuActionHandler函数接收菜单文本参数,返回一个保留该文本引用的匿名函数。- 调用
getName()获取匿名函数的系统生成名称,满足addItem对函数名字符串的要求。 - 用户点击菜单时,对应的匿名函数触发,调用
InstallFAQ1并传入菜单文本,实现业务函数对菜单显示内容的获取。
内容的提问来源于stack exchange,提问作者Tferrandis
相关产品推荐
相关产品推荐

