将复选框重置为 false

Dav*_*eB1 7 checkbox google-sheets google-apps-script

我有一个 Google 电子表格,其中 A 列的每一行都有复选框。我编写了一个脚本来在复选框被选中的所有行上执行一个函数,但我想在最后添加一个重置函数,以便在脚本运行后再次取消选中所有选中的框。

我试过使用这样的 for 循环:

var dataRange = sheet.getRange('A3:A');
var values = dataRange.getValues();

for (var i = 0; i < values.length; i++) {
  for (var j = 0; j < values[i].length; j++) {     
    if (values[i][j] == true) {
      values[i].setValue(false);
    }
  }    
} 
Run Code Online (Sandbox Code Playgroud)

但显然这不起作用,因为我收到错误。

有谁知道如何做到这一点?

Tan*_*ike 5

这个改装怎么样?我认为针对您的情况有几种解决方案。因此,请将此视为其中之一。

改装要点:

  • 问题的原因是values[i].setValue(false);values[i]是一个数组。请使用范围为setValue()
    • 但是setValue()在 for 循环中使用会导致更高的成本。所以在这次修改中,我使用了setValues().
  • 把“假”放在values,如果values[i][j]是“真”。
  • 使用 将修改后的值放到工作表中setValues()

修改后的脚本:

var dataRange = sheet.getRange('A3:A');
var values = dataRange.getValues();
for (var i = 0; i < values.length; i++) {
  for (var j = 0; j < values[i].length; j++) {
    if (values[i][j] == true) {
      values[i][j] = false; // Modified
    }
  }
}
dataRange.setValues(values); // Added
Run Code Online (Sandbox Code Playgroud)

参考 :

如果这不是你想要的,请告诉我。我想修改它。


The*_*ter 5

更新:

range.uncheck()您现在可以直接在范围内使用


或者,由于您想取消选中范围中的所有内容(并且所有范围中都有复选框),因此只需执行以下操作:

sheet.getRange('A3:A').setValue(false);
Run Code Online (Sandbox Code Playgroud)

无需检查/循环。