首页 > 解决方案 > 谷歌表格使用脚本检查单元格是否有边框

问题描述

我正在尝试将自定义格式添加到报告中,以便任何使用它的品牌都可以更改其品牌颜色。

我目前正在更改单元格颜色,但我只希望这些单元格在有边框的情况下更改颜色。所以它使用边框作为AND检查。

这是当前版本,如果它们匹配颜色,它将更改单元格。但是,如果将它们更改为白色,然后您想更改为另一种颜色,则整张纸都会改变颜色。因此,我正在考虑如何使一组单元格独一无二,以便脚本仅对这些单元格执行操作。

function colorReplace() {
  var spread = SpreadsheetApp.openByUrl('SPREADSHEET_URL');
  var doc = spread.getSheetByName("DASHBOARD_NAME");
  var settings = spread.getSheetByName("Settings");

  // get all the existing active sheet background colours
  var cells = doc.getRange(1, 1, doc.getLastRow(), doc.getLastColumn()).getBackgrounds();
  var rows = cells.length;
  var cols = cells[0].length;

  var primary = doc.getRange('E2').getBackground(); // Get background of ref cell
  var primaryReplace = settings.getRange('B2').getValue(); // Get background from cell in settings
  var border = settings.getRange('B5').getValue(); // Get border colour from cell in settings

  //Logger.log(primary);
  //Logger.log(primaryReplace);

Boolean for those cells which have a border

  // iterate accross
  for (var i = 0; i < rows; i++){
    for (var j = 0; j < cols; j++){
      if (cells[i][j] == primary && cells[i][j] == check ){ 

// if cells equal cell colour and they have a border. Possibly could just change this to if cells have a border?

            cells[i][j] = primaryReplace; // Cell Colour Change
          }
        }
      }
      // update backgound colours
      doc.getRange(1, 1, doc.getLastRow(), doc.getLastColumn()).setBackgrounds(cells);
    }

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


推荐阅读