我需要编写一个脚本,如果单元格颜色为红色,它将被删除。我找到了 excel 的答案,但没有找到 google 表格。
这是一个用于此目的的函数。您可能需要对其进行调整以满足您的需求。
function deleteCellsDependingOnColor() {
var colorToDelete = '#ff0000';
var gs = SpreadsheetApp.getActive();
var sn = gs.getSheetByName('Sheet1');
var data = sn.getDataRange().getValues();
for (var r = 0; r < data.length; r++) {
for (var c = 0; c < data[0].length; c++) {
var cellBgColor = sn.getRange(r + 1, c + 1).getBackground();
if (cellBgColor === colorToDelete) {
sn.getRange(r + 1, c + 1).deleteCells(SpreadsheetApp.Dimension.ROWS);
//for clearing values only use
//sn.getRange(r+1,c+1).clear();
}
}
}
}
仅当您确实要删除单元格时才使用方法
deleteCells()
,您只想删除值和背景颜色,请使用clear()
方法
这是使用最佳实践的解决方案:
function myFunction() {
var color = '#ff0000';
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getDataRange();
var data = range.getValues(); // get all data
var backgrounds = range.getBackgrounds(); // get all backgrounds
// check the backgrounds and change the data
for (let row in data) for (let col in data[0]) {
if (backgrounds[row][col] == color) data[row][col] = '';
}
range.setValues(data); // set the data back on the sheet
}
它以二维数组的形式抓取工作表上的所有数据,更改数组,然后将修改后的数组一次性全部放回到工作表上。
如果功能完美运行,但我希望其他单元格保持不变(如果它们不具有指定的背景、颜色),我该怎么做?