Google Apps Script中!=不等于运算符失效问题求助
问题分析与修正方案
嘿,我来帮你排查下代码里的问题~你遇到的不等于比较失效,主要是因为几个关键的代码错误,咱们一个个说清楚:
- 你拿到的不是用户输入的密码值:
SpreadsheetApp.getUi().prompt()返回的是一个UiResponse对象,不是用户输入的文本内容!直接拿这个对象和数字123比较,永远都不会相等。你需要调用getResponseText()方法来提取用户输入的内容。 - do-while循环语法错误:你的代码里
while( x != pass){ }多了一对多余的大括号,正确的do-while结构应该是do { 循环体 } while(条件);,不需要额外的闭合括号。 - 变量重复声明+类型不匹配:你在函数开头已经声明过
var x,循环里没必要再写var x;另外用户输入的是字符串类型,你的pass是数字类型,直接比较会有类型差异,需要把输入内容转成数字再比较。
下面是修正后的完整代码:
function onOpen(e) { // onOpen事件里可以直接用e.source拿到当前表格,不需要再openById var doc = e.source; var pass = 123; var x; do { // 获取prompt对象,提取输入文本并转成数字 var response = SpreadsheetApp.getUi().prompt("Ingresa contraseña por favor"); x = Number(response.getResponseText()); // 处理用户点击取消的情况 if (response.getSelectedButton() === SpreadsheetApp.getUi().Button.CANCEL) { SpreadsheetApp.getUi().alert("你取消了密码验证"); return; } } while (x !== pass); SpreadsheetApp.getUi().alert("Contraseña correcta"); }
额外补充个小优化:onOpen事件触发时,e参数里已经包含了当前打开的表格对象e.source,所以不需要再用openById重新打开,直接用e.source更高效~
内容的提问来源于stack exchange,提问作者Jairo Py
相关产品推荐
相关产品推荐

