使用 If 语句检查复选框列中的复选框是否被选中,然后 运行 剩余的脚本

Using an If statement to check if a checkbox in a column of checkboxes is checked, and then run the remaining script

我无法让下面的工作。任何帮助,将不胜感激。我 post 编辑了一个类似的 post,我得到了一些很大的帮助,但是当我在这里应用相同的概念时,我无法让它工作。谢谢。

/** @OnlyCurrentDoc */

function onEdit(e) {

  //This IF statement ensures that this onEdit macro only runs when cells A1:A2 are edited
  if (
    e.source.getSheetName() == "Finances 2020" &&
    e.range.getColumn() == 1 &&
    1<=e.range.getRow()<=2
  ) { 

    //Cells A1:A2 are checkboxes. This section ensures the following script only runs when the checkbox is checked (and not when unchecked).
    var checkboxtest = e.range.getValue()    
    if (checkboxtest == true) {

      //Some script to test if the above works (by grabbing some text from a cell near by and pasting it into another):
      var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
      var test = spreadsheet.getRange(3, 3).getValues(); 
      spreadsheet.getRange('A3').setValues(test);
    }
  }
}
;

您还没有为 getRange(3, 3) 定义 sheet,因此您的代码无声地失败了。尝试 运行 脚本的那一部分,您就会明白我的意思。

function test() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var test = spreadsheet.getRange(3, 3).getValues(); 
  Logger.log(test); // Error: Cannot find method getRange(number,number).
}

您可以通过定义 sheet 轻松解决此问题。我不确定你是否想使用活动 sheet 或不,但我假设你这样做。所以您的代码可能看起来像这样,而且它有效。

/** @OnlyCurrentDoc */

function onEdit(e) {

  //This IF statement ensures that this onEdit macro only runs when cells A1:A2 are edited
  if (
    e.source.getSheetName() == "Finances 2020" &&
    e.range.getColumn() == 1 &&
    1<=e.range.getRow()<=2
  ) { 

    //Cells A1:A2 are checkboxes. This section ensures the following script only runs when the checkbox is checked (and not when unchecked).
    var checkboxtest = e.range.getValue()    
    if (checkboxtest == true) {

      //Some script to test if the above works (by grabbing some text from a cell near by and pasting it into another):
      var sheet = SpreadsheetApp.getActiveSheet();
      var test = sheet.getRange(3, 3).getValues(); 
      sheet.getRange('A3').setValues(test);
    }
  }
}