根据 Google 表格中的颜色清除单元格内容

问题描述 投票:0回答:3

我需要编写一个脚本,如果单元格颜色为红色,它将被删除。我找到了 excel 的答案,但没有找到 google 表格。

google-apps-script
3个回答
2
投票

这是一个用于此目的的函数。您可能需要对其进行调整以满足您的需求。

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()
方法


2
投票

这是使用最佳实践的解决方案:

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
}

它以二维数组的形式抓取工作表上的所有数据,更改数组,然后将修改后的数组一次性全部放回到工作表上。


0
投票

如果功能完美运行,但我希望其他单元格保持不变(如果它们不具有指定的背景、颜色),我该怎么做?

© www.soinside.com 2019 - 2024. All rights reserved.