基于Prompt结果的弹窗Alert失效问题求助(附代码)
问题分析与修复
你的脚本存在三个关键问题,导致提交prompt后无法弹出alert:
- 未接收prompt的输入结果:
ui.prompt()调用后没有将返回值赋值给result变量,后续判断用的result是未定义状态 - 错误调用alert方法:
alert()不是Google Apps Script的全局方法,必须使用已定义的ui对象调用ui.alert() - 工作表与单元格引用错误:
Sheet17.D3这种写法无效,需要先获取工作表对象,再通过getRange()读取单元格值
修正后的完整代码
function onOpen() { var ui = SpreadsheetApp.getUi(); // 接收prompt的返回结果 var promptResult = ui.prompt('Please provide your shift on the box below.', ui.ButtonSet.OK); // 提取用户输入的文本,去除前后空格 var result = promptResult.getResponseText().trim(); // 获取指定名称的工作表(确保名称和表格中实际工作表一致) var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet17"); if (result == "morning") { ui.alert("We have " + sheet.getRange("D3").getValue() + " OT hours for TLs and " + sheet.getRange("D11").getValue() + " for QAs!"); } else if (result == "dawn") { ui.alert("We have " + sheet.getRange("D2").getValue() + " OT hours for TLs and " + sheet.getRange("D10").getValue() + " for QAs!"); } else if (result == "EM") { ui.alert("We have " + sheet.getRange("D4").getValue() + " OT hours for TLs and " + sheet.getRange("D12").getValue() + " for QAs!"); } else if (result == "Mid") { ui.alert("We have " + sheet.getRange("D5").getValue() + " OT hours for TLs and " + sheet.getRange("D13").getValue() + " for QAs!"); } else if (result == "evening") { ui.alert("We have " + sheet.getRange("D6").getValue() + " OT hours for TLs and " + sheet.getRange("D14").getValue() + " for QAs!"); } else if (result == "night") { ui.alert("We have " + sheet.getRange("D7").getValue() + " OT hours for TLs and " + sheet.getRange("D15").getValue() + " for QAs!"); } else { // 处理用户输入不符合预期的情况 ui.alert("Invalid shift input! Please enter a valid shift name."); } }
额外注意事项
- 确认工作表名称
Sheet17和你谷歌表格中的实际工作表名称完全匹配(大小写、空格都要一致) trim()方法用于去除用户输入前后的空格,避免因输入空格导致匹配失败- 新增的else分支可以处理无效输入,提升交互体验
内容的提问来源于stack exchange,提问作者user20710166
相关产品推荐
相关产品推荐

