Есть 2 проблемы с вашим кодом для достижения того, что вы хотите:
Если условие неверно, оно всегда будет возвращать 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), чтобы увидеть в журнале сценариев приложения (View-> Logs) всецветовые коды, которые вы имеете в этом диапазоне.
[1] https://javascriptweblog.wordpress.com/2011/04/04/the-javascript-comma-operator/
[2] https://developers.google.com/apps-script/reference/spreadsheet/range#clearFormat()