通过带有数组的脚本在 Google Sheet 中设置单元格颜色

Set Cell Colours in Google Sheet through Script with an Array

将 sheets 单元格值放入数组中非常简单。然后您可以编辑任何单个单元格或您想要的单元格(在数组中)。然后将同一个数组写回 sheet。如下所示。

var adSpendExprtSheet = ss.getSheetByName("Ad Spend Export");
var adSpendExprtSheetData = adSpendExprtSheet.getRange(1 ,1, adSpendExprtSheet.getLastRow(), adSpendExprtSheet.getLastColumn()).getValues();

然后您可以更改刚刚保存的数组中的值。

adSpendExprtSheetData[0][0] = "Changing first cell in array"

然后我们可以使用同一个数组。我们已经更新了。传回去要写在实际的sheet.

adSpendExprtSheet.getRange(1 ,1, adSpendExprtSheet.getLastRow(), adSpendExprtSheet.getLastColumn()).setValues(adSpendExprtSheetData);

我们可以这样做来设置颜色吗?

现在我必须获取单个单元格的范围。然后使用 setBackground("#00ff00");

我可以将所有颜色值放入一个数组中吗?使用 HEX 值更改单元格的颜色。然后将该数组写回 sheet?

我需要优化脚本。而不是花 5 分钟。它可以在几秒钟内完成。通过读取和写入 sheet 仅几次。不是几百个。

如有任何帮助,我将不胜感激!

在您的情况下,使用 getBackgrounds()setBackgrounds(color) 怎么样?在这种情况下,您可以在问题中像 getValues()setValues() 那样使用它。当你的脚本修改后,变成如下。

修改后的脚本:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var adSpendExprtSheet = ss.getSheetByName("Ad Spend Export");
var range = adSpendExprtSheet.getRange(1 ,1, adSpendExprtSheet.getLastRow(), adSpendExprtSheet.getLastColumn());
var backgrounds = range.getBackgrounds();
backgrounds[0][0] = "#FF0000";  // This is red color as a sample.
range.setBackgrounds(backgrounds);
  • 在这种情况下,使用 getBackgrounds() 检索的值是二维数组。并且可以使用 setBackgrounds() 将其放入单元格。由此,我认为工艺成本将能够比getBackgroundsetBackground.
  • 降低。

注:

  • 如果要将一种颜色设置到范围内,也可以使用下面的脚本。

      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var adSpendExprtSheet = ss.getSheetByName("Ad Spend Export");
      var range = adSpendExprtSheet.getRange(1 ,1, adSpendExprtSheet.getLastRow(), adSpendExprtSheet.getLastColumn());
      range.setBackground("#FF0000");
    

参考文献: