我有一个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);
}
}
}
但是很明显,这在我遇到错误时不起作用。
有人知道该怎么做吗?
答案 0 :(得分:0)
此修改如何?我认为针对您的情况有几种解决方案。因此,请将此视为其中之一。
values[i].setValue(false);
。 values[i]
是一个数组。请使用setValue()
的范围。
setValue()
会导致更高的成本。因此,在此修改中,我使用了setValues()
。values
为“ true”,则将“ false”放入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
如果这不是您想要的,请告诉我。我想修改它。
答案 1 :(得分:0)
或者,由于您要取消选中范围内的所有内容(并且所有范围内都具有复选框),因此请执行以下操作:
sheet.getRange('A3:A').setValue(false);
没有检查/循环。
答案 2 :(得分:0)
以上发布的此解决方案会重置所有复选框; 但是,它还会意外地将其中值为 1 的单元格更改为 FALSE。
我想制作一个脚本来重置所有工作表上的复选框...
function resetCheckBoxesAllSheets() {
var ss = SpreadsheetApp.getActive();
var allsheets = ss.getSheets();
for (var s in allsheets){
var sheet=allsheets[s]
var dataRange = sheet.getRange('A4:Z100');
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);
}//end of sheets loop.
}// end of function...
答案 3 :(得分:0)
通过突出显示要“取消选中”区域的所有单元格,按住Crtl并双击空格键。
答案 4 :(得分:0)
remove-check-marks 方法是“uncheck”...
var range = SpreadsheetApp.getActive().getRange('A21:A59');
range.uncheck();
答案 5 :(得分:0)
我编写了一个脚本来检查数据范围并相应地检查取消选中所有。 这是脚本。
function onEdit(e){
Logger.log('OnEdit');
var range = e.range;
var cl = range.getColumn();
var rw = range.getRow();
Logger.log('Row = ' + rw + ' Column = ' + cl);
var ActiveSheet = ss.getActiveSheet();
if(ActiveSheet.getName() === 'Companies' && rw == 1 && cl == 5){
var isAllTrue = ActiveSheet.getRange(rw, cl).getValue();
if(isAllTrue == true){
var Avals = ActiveSheet.getRange("A1:A").getValues();
var Alast = Avals.filter(String).length;
ActiveSheet.getRange(2, 5, Number(Alast-1)).setValue(true);
}
else
{
var Avals = ActiveSheet.getRange("A1:A").getValues();
var Alast = Avals.filter(String).length;
ActiveSheet.getRange(2, 5, Number(Alast-1)).setValue(false);
}
}
}
Change sheet name as per your need.
注意:如果不触发自动,则为相同的函数创建 onedit 触发器。