在循环中取消选中google工作表中的复选框



我试图在函数运行后取消相应的复选框。

它最初记录为True(因为它被选中了),然后给它赋值false,然后它记录为false。然而,电子表格仍然显示为True,复选框仍然被选中。

感谢
function getData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
// Get data range and values
var rows = ss.getDataRange().getValues();
var teeTimes = [];
// Loop through each row of range
rows.forEach(function (row) {
// If checkbox is true
if (row[7] === true && row[8] === false) {
Logger.log(row[7]); // Prints True
row[7] = false;
var singleTime = {};
singleTime.day = Utilities.formatDate(row[1], "GMT", 'MMM d');
singleTime.time = Utilities.formatDate(row[2], "EST", 'h:mm');
singleTime.player1 = row[3];
singleTime.player2 = row[4];
singleTime.player3 = row[5];
singleTime.player4 = row[6];
teeTimes.push(singleTime);
Logger.log(row[7]); // Prints False
}
});
}

电子表格图片

试试这个

function getData() {
var ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet0')
var vs = sh.getRange(2,1,sh.getLastRow() -1, sh.getLastColumn()).getValues();
vs.forEach((r,i) => {
if (r[7] == true && r[8] == false) {
vs[i][7] = "FALSE";
Logger.log(r[7]); // Prints False
}
});
sh.getRange(2,1,vs.length,vs[0].length).setValues(vs);
}

我把与问题无关的东西拿了出来。我还添加了sh变量,这样我就可以setValues();

你也可以这样做:

function getData() {
var ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet0')
var vs = sh.getRange(2,1,sh.getLastRow() -1, sh.getLastColumn()).getValues();
vs.forEach((r,i) => {
if (r[7] == true && r[8] == false) {
sh.getRange(i+2,8).setValue("FALSE");
//Logger.log(r[7]); // Prints False
}
});
}

最新更新