首页 > 解决方案 > 两个相等的变量不触发 if() 语句

问题描述

我有点生疏,所以可能有一些明显的东西,但我正在设置一个表单,我想在勾选复选框时隐藏一行,但是我用来检查单元格实际内容的 if 语句对照预定的“VALUE”没有触发。上面的日志都打印为“true”,但从未输入过 if 语句。我错过了什么?


var SHEET = "Requests"; //Sheet Name
var VALUE = "true"; //Value that will hide the row
var COLUMN_NUMBER = 11 //Column K
 
function onOpen(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet(); //Setters and getters woohoo
  var activeSheet = ss.getActiveSheet();
  
  if(SHEET == activeSheet.getName()){
    var cell = ss.getActiveCell()
    var cellValue = cell.getValue(); //Gets current cell and the value in it
    
    //Ensure we are looking at the correct column.
    if(cell.getColumn() == COLUMN_NUMBER){
      console.log("Cell Contains " + cellValue + " and VALUE is " + VALUE);
      
      if(cellValue == VALUE){

        console.log("Rows Hidden");
        activeSheet.hideRow(cell);
      };
    };
  };
}[Log showing both printed true][1]


  [1]: https://i.stack.imgur.com/XAvpm.png

标签: google-apps-scriptgoogle-sheets

解决方案


发现:

( VALUEcontains a value "true") 与第 17 行的(contains a value true)string的值不匹配,这就是您的代码不起作用的原因:cellValueboolean

if(cellValue == VALUE){

    console.log("Rows Hidden");
    activeSheet.hideRow(cell);
  };

解决方案:

我已经复制了您的脚本,并且能够通过更改预定义的脚本来使其工作VALUE

从:

var VALUE = "true"; 

到(布尔变量):

var VALUE = true; 

推荐:

我还简化了您的脚本(由于嵌套if语句)并将您的函数从 更改onOpenOnEdit因为onOpenif由于变量而不会运行您的语句ss.getActiveCell()cell这将需要您突出显示/选择一个单元格,但在打开电子表格时这是不可能的文件。

使用OnEdit功能将在您在工作表上选中后立即自动隐藏复选框:

var SHEET = "Requests";
var COLUMN_NUMBER = 11;
var VALUE = true;

function onEdit() {
  var ss = SpreadsheetApp.getActive().getActiveSheet();
  var cell = ss.getActiveCell();
  var cellValue = cell.getValue();

  if(SHEET == ss.getName() & cell.getColumn() == COLUMN_NUMBER & cellValue == VALUE){
    console.log("Cell Contains " + cellValue + " and VALUE is " + cellValue);      
    console.log("Rows Hidden");
    ss.hideRow(cell);
  };
}

推荐阅读