仅颜色白色细胞

时间:2015-10-12 00:34:05

标签: google-apps-script google-sheets

我试图找出一种只为未着色(白色)细胞着色的方法,但保留那些颜色已经不受影响的细胞。

我现在正在使用的内容如下所示:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetSelect = ss.getSheetByName("DataFile");
var range = sheetSelect.getRange(2,1,5,16)

if (range.getBackgrounds() == "#ffffff" )
   {
     range.setBackground("#EEEEEE")
   }

然而,它似乎没有工作,任何提示或建议?

1 个答案:

答案 0 :(得分:1)

问题是range.getBackgrounds()返回一个数组数组,如下所示:[[第1行第1列颜色“],[”第1行颜色,第2列“] ......]

因此,您需要使用两个嵌套的for循环访问背景颜色,并保留已更改的值(即如果不是#ffffff)或将其更改为#EEEEEE:

function main() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheetSelect = ss.getSheetByName("Sheet1");
  var range = sheetSelect.getRange(2,1,5,16);
  var oldBackground = range.getBackgrounds()
  var newBackground = [];
  for (var i=0; i < oldBackground.length; i++) {
    newBackground.push([])
    for (var j=0; j < oldBackground[i].length; j++)
    {
      if (oldBackground[i][j] != "#ffffff") {
        newBackground[i].push(oldBackground[i][j]);
        }
      else {
        newBackground[i].push("#EEEEEE");
        }
      }
  }
  range.setBackgrounds(newBackground);
}