使用新方法更新:通过颜色代码清除特定范围单元格的内容。我感觉到它已经快到了,但是我错过了一些东西,它清除了所有范围的内容,但没有列出我在那些指定单元格范围内列出的颜色代码。
这就是我一直在尝试的方法。
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();
}
}
}
}
;
答案 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()