通过带有数组的脚本在Google表格中设置单元格颜色 修改后的脚本:注意:参考文献:

问题描述

将工作表单元格值放入数组非常简单。然后,您可以编辑所需的任何单个单元格(在阵列中)。然后将该相同的数组写回到工作表中。如下所示。

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"

然后我们可以使用相同的数组。我们已经更新了。将其传回以写在实际图纸上。

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

我们可以设置颜色吗?

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

我可以将所有颜色值放入数组中吗?用十六进制值更改单元格的颜色。然后将该数组写回到工作表上?

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

我将不胜感激!

解决方法

在您的情况下,如何使用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,adSpendExprtSheet.getLastColumn());
      range.setBackground("#FF0000");
    

参考文献: