You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:44:29