我写了以下代码:
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
。
答案 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);
};