代码之家  ›  专栏  ›  技术社区  ›  Jack Trowbridge

用数组通过脚本在Google工作表中设置单元格颜色

  •  1
  • Jack Trowbridge  · 技术社区  · 5 年前

    将sheets单元格值放入数组是非常直接的。然后您可以编辑任意一个或多个单元格(在数组中)。然后把同样的数组写回工作表。像下面这样。

    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 ,1, adSpendExprtSheet.getLastRow(), adSpendExprtSheet.getLastColumn()).setValues(adSpendExprtSheetData);
    

    我们可以用这个来设置颜色吗?

    现在我需要得到单个细胞的范围。然后使用setBackground(“#00ff00”);

    我能把所有的颜色值放入一个数组吗?用十六进制值更改单元格的颜色。然后把这个数组写回工作表?

    我需要优化我的脚本。而不是花5分钟。几秒钟就能搞定。只在纸上读写几遍。不是几百。

    我会很感激你的帮助!

    1 回复  |  直到 5 年前
        1
  •  1
  •   Tanaike    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);
    
    • 在本例中,使用 获取背景() 是二维数组。它可以用 setBackgrounds() getBackground setBackground .

    注:

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

    参考文献: