e.values
的类型明显不同。我们知道布尔类型触发器的事件对象中返回的确切类型吗?
以下所有内容均引用自上述问题。该信息的作者是GserraG。如果原作者希望自己的贡献获得声誉,他们可以添加新答案并要求删除该答案。
读取工作表上复选框的不同布尔类型的 e.values,我恢复了在表格上读取的(奇数)e.values。)
我通过单击复选框并触发 onEdit 函数来获取此值。读取的值不是布尔值。 在表中,您可以看到读取的值是TRUE/FALSE和字符串类型。 通过坐标读取单元格,它会返回正确的值,如您在另一个表中看到的那样。
您可以使用此代码进行测试
function onEdit(e) {
var eA1 = e.range.getA1Notation();
var ui = SpreadsheetApp.getUi();
// e.value and his typeof
ui.alert("(" + eA1 + ") e.value=" + e.value);
ui.alert("(" + eA1 + ") typeof e.value=" + typeof e.value);
// eValue and his typeof
var eValue=e.value;
ui.alert("reading of eValue......");
ui.alert("(" + eA1 + ") eValue=" + eValue);
ui.alert("(" + eA1 + ") typeof eValue=" + typeof eValue);
// getting de value of (e)cell
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var eTargetCell = sheet.getRange(eA1);
var eCellValue = eTargetCell.getValue();
// eCellValue and his typeof
ui.alert("direct reading of cell.......");
ui.alert("(" + eA1 + ") eValue=" + eCellValue);
ui.alert("(" + eA1 + ") typeof eValue=" + typeof eCellValue);
}
您可以轻松地创建一个函数来获取“e”单元格的布尔值。 要获得 e.oldValue 的正确值...如果需要,您可以在原始单元格中轻松恢复它,通过
e.range.setValue(eOldValue);
或在另一个单元格中(此时未测试)
我在互联网上没有找到这个问题的帮助,我花了很多时间钻研,我希望这可以节省其他人的时间,或者也许有人可以修改这个代码来做一个更好的版本。