这个“ IF”对我不起作用。为什么?

时间:2018-07-16 13:32:30

标签: if-statement google-apps-script google-sheets

我写了以下代码:

function test() {
  var spreadsheet = SpreadsheetApp.getActive();
  var ui = SpreadsheetApp.getUi();
  var testModeStatus = spreadsheet.getSheetByName("Students").getRange("P2:P2").getValues();  
  if (testModeStatus == 'FALSE') {
     ui.alert("This is inside IF and Test Mode Status is "+testModeStatus);
    };
    ui.alert("This is outside IF and Test Mode Status is "+testModeStatus);
};

在上面的代码中,变量testModeStatus表示一个工作表单元格,它是一个复选框,其值可以为TRUE(选中)或FALSE(未选中)。

我希望if中的代码仅在未选中此复选框时运行。但是无论复选框是否选中,if内的代码都不会运行,在两种情况下,if内的代码都不会运行。
此外,在两种情况下,变量testModeStatus在弹出警报消息中均显示正确的值。我的意思是,如果选中此复选框,则变量将显示TRUE,如果未选中,则变量将在弹出的警报消息中显示FALSE

1 个答案:

答案 0 :(得分:4)

您正在比较苹果和橙子

.getValues()返回一个二维数组,而"FALSE"是一个字符串。

既然有了单元格,就可以改用.getValue,但要注意GAS将布尔值解析为JS布尔值,因此,最终,代码应为:

function test() {
  var spreadsheet = SpreadsheetApp.getActive();
  var ui = SpreadsheetApp.getUi();
  var testModeStatus = spreadsheet.getSheetByName("Students").getRange("P2:P2").getValue();  // getValue, not values
  if (testModeStatus == false) { //false, not "FALSE"
     ui.alert("This is inside IF and Test Mode Status is "+testModeStatus);
    };
    ui.alert("This is outside IF and Test Mode Status is "+testModeStatus);
};