调试Google Script:alert弹窗关闭按钮逻辑报错排查
问题排查与修复
错误原因
你的代码存在两个核心问题:
- 按钮集与判断逻辑不匹配:使用
ui.ButtonSet.OK时,弹窗仅显示一个OK按钮,不存在"CLOSE"按钮,但你依然写了针对"CLOSE"的判断分支。更关键的是,用户点击弹窗右上角的关闭按钮时,返回的是Ui.Button.CLOSE枚举值,而非字符串"CLOSE",直接用字符串比较会导致类型不匹配,触发未知错误。 - 返回值类型错误:
ui.alert()的返回值是Ui.Button枚举对象,不是字符串,你用字符串"OK"和返回值比较,逻辑本身不成立。
修复后的代码
function onOpen() { var ui = SpreadsheetApp.getUi(); let buttonPushed = ui.alert("🔔 Polite Notice 🔔", "✅ Please ensure you have read the MUST READ tab before filling out your sheet. 🛒 Jump to sheet by using the MODULE INFO tab. 🌟 Thank you.", ui.ButtonSet.OK); if (buttonPushed === ui.Button.CLOSE) { SpreadsheetApp.getActiveSpreadsheet().toast("💡 Remember you can quickly jump to your sheet via the MODULE INFO tab"); } else if (buttonPushed === ui.Button.OK) { SpreadsheetApp.getActiveSpreadsheet().toast("👍 You accepted me"); } }
关键修改说明
- 将字符串比较
"CLOSE"、"OK"替换为枚举值ui.Button.CLOSE、ui.Button.OK,匹配ui.alert()的返回值类型。 - 保持变量命名一致性(
buttonpushed改为buttonPushed,非强制但符合代码规范)。
如果需要同时显示OK和取消按钮(而非仅右上角关闭),可以将ui.ButtonSet.OK替换为ui.ButtonSet.OK_CANCEL,此时用户点击取消按钮也会触发ui.Button.CLOSE的分支逻辑。
内容的提问来源于stack exchange,提问作者Elizabeth Stocks
相关产品推荐
相关产品推荐

