取消选中循环中 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
    }
  });
}