根据谷歌工作表中的颜色清除单元格内容



我需要写一个脚本,如果单元格颜色是红色,它就会被删除。我找到了excel的答案,但没有找到谷歌表单。

这里有一个函数。你可能需要调整它以满足你的需求。

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
}

它将图纸上的所有数据作为二维数组获取,更改数组,并将修改后的数组一次性放回图纸上。

最新更新