Google apps script 如何在GoogleApps脚本中只选中一个复选框而不是两个?

Google apps script 如何在GoogleApps脚本中只选中一个复选框而不是两个?,google-apps-script,google-sheets,triggers,radio-button,Google Apps Script,Google Sheets,Triggers,Radio Button,因此,我想这样做,如果输入的是TRUE语句,则另一个复选框将为FALSE,反之亦然。官方GAS文档包含许多有用的示例,因此请在遇到问题时参考。下面的例子可能会对您有所帮助。这适用于第1列中两个复选框直接位于彼此下方(第1行和第2行)的场景 function onEdit() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheets()[1]; if (sheet.getActiveCell()

因此,我想这样做,如果输入的是TRUE语句,则另一个复选框将为FALSE,反之亦然。

官方GAS文档包含许多有用的示例,因此请在遇到问题时参考。下面的例子可能会对您有所帮助。这适用于第1列中两个复选框直接位于彼此下方(第1行和第2行)的场景

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[1];
  if (sheet.getActiveCell() = "E11"){
    sheet.getRange('E12').activate();
    sheet.getCurrentCell().setValue('FALSE');
    sheet.getRange('E13').activate();
    sheet.getCurrentCell().setValue('FALSE');
    sheet.getRange('E14').activate();
    sheet.getCurrentCell().setValue('FALSE');
  }
  if (sheet.getActiveCell() = "E12"){
    sheet.getRange('E11').activate();
    sheet.getCurrentCell().setValue('FALSE');
    sheet.getRange('E13').activate();
    sheet.getCurrentCell().setValue('FALSE');
    sheet.getRange('E14').activate();
    sheet.getCurrentCell().setValue('FALSE');
  }
}

这里是的另一个实现,它使用类支持任意定向的分组复选框,前提是它们都位于同一工作表上(范围源必须位于同一工作表上)

参考资料


getValue
&
setValue
,加上JavaScript比较。请注意,您只需删除/替换
activate()
+
CurrentCell()
逻辑即可录制宏,使用更直接的逻辑:获取范围->对范围执行操作
function onEdit(e){

  //Checkbox coordinates. 
  var checkboxColumn = 1;
  var checkboxRows = [1, 2];
  var sheetName = "YOUR_SHEET_NAME";

  //Get the edited cell value 
  var value = e.value;

  //Get the old value
  var oldValue = e.oldValue;

  var editedRange = e.range;
  var editedSheet = editedRange.getSheet();

  if (editedSheet.getName() == sheetName && editedRange.getColumn() == checkboxColumn && checkboxRows.indexOf(editedRange.getRow()) != -1) {  

    //Get the row coordinate of the other checkbox
    var checkboxRow = checkboxRows.filter(function(rowNum) { return rowNum != editedRange.getRow();})[0];

    //set its value to the old value of the edited checkbox
    var range = editedSheet.getRange(checkboxRow, checkboxColumn).setValue(oldValue);

  }

}
function onEdit(e) {
  const sheetName = 'some sheet name',
      rbLocations = [
        {r: 1, c: 1}, // A1
        {r: 2, c: 4}, // D2
        {c: 1, r: 8}, // A8
        ...
      ];

  if (!e) return; // only run for sheet edits.

  const toggle = e.oldValue;
  if (toggle === undefined)
    return; // require edit to be of a single cell.

  const sheet = edited.getSheet();
  if (sheet.getName() !== sheetName)
    return; // require edit to be of the desired sheet.

  const edited = e.range,
      eRow = edited.getRow(),
      eCol = edited.getColumn(),
      otherRBs = rbLocations.filter(
        function (loc) {
          return loc.r !== eRow || loc.c !== eCol;
        }
      ).map(
        function (l) {
          // Create an R1C1 notation string.
          return "R" + l.r + "C" + l.c; 
        }
      );

  // Acquire and use a RangeList to set the same value to all the other checkboxes.
  sheet.getRangeList(otherRBs).setValue(toggle);
}