我正在尝试在Google表格中创建一个任务列表,可以在其中选中一个复选框(值true / untrue)。最终,我想删除任务列表中所有选中的任务(标记为true)。我知道如果复选框为checkt且我的代码有效时如何删除整行。但是在这种情况下,我只需要删除D列至K列中复选框的信息即可。我不希望删除同一行中任何其他列的任何其他信息。
就像我说的,我有一个有效的代码。在示例表中,我有一个示例,其中我想删除项目Mario。复选框已选中,现在我要从D列删除信息,直到K列。
https://docs.google.com/spreadsheets/d/1EYxtzro_vk-gK1iReyjKQ-WwM5G9Jiu-h-55zuHMWXg/edit?usp=sharing
function deleteCells() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName('Blad1');
var r = s.getRange('K:K');
var v = r.getValues();
for(var i=v.length-1;i>=0;i--)
if(v[0,i]=='true')
s.deleteRow(i+1);
};
答案 0 :(得分:1)
使用range.clear(options)
删除内容和格式,而不是删除行。
我创建了var datasetrange = s.getRange(i+1,4,1,7);
来标识范围。请注意,这是从Coluymn D到J列的范围
datasetrange.clear({contentsOnly: true});
-删除内容datasetrange.clear({formatOnly: true});
-删除格式然后作为单独的练习:
s.getRange(i+1,11).setValue(false);
-这是单元格“ K6”的范围,它将复选框的值从“ true”更改为“ false”(假设BTW,您使用了复选框的默认值) )。 function so5763377101() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName('Blad1');
var r = s.getRange('K:K');
var v = r.getValues();
var dataset = [];
for(var i=v.length-1;i>=0;i--)
if(v[0,i]=='true') {
// Logger.log("DEBUG: i:"+i+", checkbox = "+v[0,i]);
var datasetrange = s.getRange(i+1,4,1,7);
// Logger.log(datasetrange.getA1Notation());
datasetrange.clear({contentsOnly: true});
datasetrange.clear({formatOnly: true});
s.getRange(i+1,11).setValue(false);
}
}