如果复选框被选中,使用脚本来清除行和明确的复选框指定的单元运行脚本后(If Checkbox is

2019-10-29 16:21发布

我试图让一个复选框来运行它是在该行的脚本。它通过在指定的表中的所有行需要循环。

如果一个复选框,在F列检查,我想安排一个脚本来清除列BF。

B是应设置为FALSE℃的复选框是数据验证的输入d是数据验证的输入E是依赖于在C和D数据的公式应保持的公式。

-F为真正是触发复选框

若F被选中,然后在乙清楚内容,C,d,F(E不应该被清除,因为它是一个公式)

我试着修改从这里脚本等各个环节都没有成功:

重置复选框假

使用脚本来生成在谷歌工作表行的文档,如果复选框被选中

谷歌表脚本隐藏行如果选中复选框


 function try_It(){
 deleteRow(5); //// choose col = 2 for column C, 5 for F
 }

 function deleteRowContents (col){ // col is the index of the column to check for checkbox being true

 var sh = SpreadsheetApp.getActiveSheet();
 var data = sh.getDataRange().getValues();
 var targetData = new Array();
 for(n=0;n<data.length;++n){
 if(data[n][col]!="TRUE" && data[n][col]!="FALSE"){ targetData.push(data[n])};
 }
 Logger.log(targetData);
 sh.getDataRange().clear();
 sh.getRange(1,1,targetData.length,targetData[0].length).setValues(targetData);
 }

预期结果:如果F列检查,明确B:的F相同的行(我知道上面这个脚本甚至没有接近完成)。

实际结果:这将删除所有的整个工作表上的格式。 它正确不明确范围,即使在F列复选框。

Answer 1:

  • 要清除的“B”列的值设置为“D”和列“F”时,列“F”的复选框true
    • 在这种情况下,要复选框更改为false
  • 你不想清除单元格的格式。

如果我的理解是正确的,这个怎么修改? 请认为这只是几个解决方案之一。 修改后的脚本的流程如下。

  • 从检索到的值删除列上创建的范围列表。
  • 清除范围列表的内容。

修改后的脚本:

function deleteRowContents (col){ // col is the index of the column to check for checkbox being true
  var col = 6; // If the column "F" is 6, please set 6.
  var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet4"); // Modified
  var data = sh.getDataRange().getValues();

  // Below script was modified.
  var deleteRanges = data.reduce(function(ar, e, i) {
    if (e[col - 1] === true) { // Modified
      return ar.concat(["B" + (i + 1) + ":D" + (i + 1), "F" + (i + 1)]);
    }
    return ar;
  }, []);
  if (deleteRanges.length > 0) { // or if (deleteRanges.length) { // Added
    sh.getRangeList(deleteRanges).clearContent();
  }
}

参考文献:

  • 类RangeList
  • clearContent()

如果我误解你的问题,这是不是你想要的结果,我表示歉意。



文章来源: If Checkbox is checked, use a script to clear specified cells in row and clear checkbox after script is run