我希望此函数将单元格D38
中的布尔值从true
切换为false
,或从false
切换为true
。
function changeState() {
var a=SpreadsheetApp.getActiveSheet().getRange('D38');
a=!a;
SpreadsheetApp.getActiveSheet().getRange('D38').setValue(a);
};
它目前没有按我的意愿行事:它会将TRUE
转换为FALSE
,但无论如何都不会将FALSE
转换为TRUE
。
为什么它会像这样,我该如何解决?
答案 0 :(得分:4)
从文档中,getRange
返回Range
类型的对象。问题是!a
否定了该对象的真值,而不是存储在单元格中的值。因此,无论实际值存储在该单元格中的是什么,这将始终返回false(除非a
为空)。
您需要使用相应的getValue
/ setValue
方法从单元格中获取实际值:
function changeState() {
var a = SpreadsheetApp.getActiveSheet().getRange('D38');
var value = a.getValue();
value = !value;
a.setValue(value);
};
或更简单:
function changeState() {
var a = SpreadsheetApp.getActiveSheet().getRange('D38');
a.setValue(!a.getValue());
};