取消选中循环中 google 个工作表中的复选框
Uncheck checkbox in google sheets in loop
我正在尝试让相应的复选框在函数运行后取消选中。
它最初记录为 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
}
});
}
Picture of spreadsheet
这样试试
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
}
});
}
我正在尝试让相应的复选框在函数运行后取消选中。
它最初记录为 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
}
});
}
Picture of spreadsheet
这样试试
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
}
});
}