通过颜色代码清除特定范围的单元格内容

时间:2019-06-16 23:15:37

标签: google-apps-script google-sheets

使用新方法更新:通过颜色代码清除特定范围单元格的内容。我感觉到它已经快到了,但是我错过了一些东西,它清除了所有范围的内容,但没有列出我在那些指定单元格范围内列出的颜色代码。

这就是我一直在尝试的方法。

  var sheet = SpreadsheetApp.getActive().getSheetByName('HSRD');
  var range = sheet.getRange("HSRD!B5:B8");
  var bgColors = range.getBackgrounds();
  for (var i=0; i<bgColors.length; i++) {
    for (var j=0; j<bgColors[i].length; j++) {
      if (bgColors[i][j] === '#F7B16B','#B6D7A8','#C9DBF8') {
        range.getCell(i+1,j+1).clearContent();
      }
    }
  }  
}
    ;   

1 个答案:

答案 0 :(得分:0)

要实现所需的代码,有两个问题:

如果条件错误,它将始终返回true,因为您使用“,”加入条件,这将返回最后一个元素(它是一个字符串,将被视为“ true”)。要了解有关逗号运算符的更多信息,请阅读[1]。相反,您必须使用“ ||”运算符加入条件。另一种方法是使用数组(如果更方便),这是条件:

['#F7B16B', '#B6D7A8', '#C9DBF8'].includes(bgColors[i][j])

您正在使用clearContent()函数清除内容,但是如果您希望清除格式,则还需要使用clearFormat()函数。 [2]

function myFunction() {
    var sheet = SpreadsheetApp.getActive().getSheetByName('HSRD');
    var range = sheet.getRange("HSRD!B5:B8");
    var bgColors = range.getBackgrounds();

    for (var i=0; i<bgColors.length; i++) {
      for (var j=0; j<bgColors[i].length; j++) {
        if (bgColors[i][j] === '#F7B16B' || bgColors[i][j] === '#B6D7A8 || bgColors[i][j] === '#C9DBF8) {
        range.getCell(i+1,j+1).clearContent().clearFormat();
      }
    }
  }
}

此外,请确保使用正确的颜色代码,您可以使用Logger.log(bgColors)进行检查,以在App脚本日志(查看->日志)中查看该范围内的所有颜色代码。

[1] https://javascriptweblog.wordpress.com/2011/04/04/the-javascript-comma-operator/

[2] https://developers.google.com/apps-script/reference/spreadsheet/range#clearFormat()