如果选中了复选框,则删除行的一部分

时间:2019-08-23 22:46:42

标签: google-apps-script google-sheets google-sheets-macros

我正在尝试在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);
};  

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);    
      }
    }