匹配另一个单元格的背景颜色

时间:2016-12-29 20:56:05

标签: google-sheets

我正在使用Google Spreadsheets,我正在尝试执行以下操作:

当我更改单元格D2的颜色时,如何获得一系列单元格(R2:V2)以匹配D2的背景颜色。

例如: 如果我将D2的背景颜色更改为红色。我希望单元格R2到V2格式化为相同的红色。

如果我将D3的背景颜色更改为绿色。我希望单元格R3到V3格式化为相同的绿色。

谢谢!

2 个答案:

答案 0 :(得分:1)

简短的回答是你不能

答案很长:

如果您查看Google Apps脚本documentation以了解自定义功能,您将看到可以执行的所有功能的列表。

问题是您只能设置值,而不能设置单元格的颜色。您将获得拒绝许可。

为了向您展示,请查看以下脚本:

function colorChanger(text, cellref, colorref) {

    var sheet  = SpreadsheetApp.getActiveSpreadsheet();
    var color = sheet.getRange(colorref).getBackground();
    var cell = sheet.getRange(cellref);

    cell.setBackground(color);


    return text;

}

理论上,应该可以工作,但是脚本不支持它。

在google-sheets中运行时,您会收到以下信息:

enter image description here

根据他们的文件,他们说:

  

如果您的自定义函数抛出了您没有的错误消息   允许调用X服务。该服务需要用户授权   因此不能用于自定义功能。

参考:https://developers.google.com/apps-script/guides/sheets/functions

答案 1 :(得分:1)

您可以使用onChange:

执行此操作
function onChange(e) {
   var ss=SpreadsheetApp.getActiveSpreadsheet()
   var s=ss.getActiveSheet()
   Logger.log(e.changeType);//e.changeType will equal FORMAT
   var clr1=s.getRange("D2").getBackground()
   var clr2=s.getRange("R2").getBackground()
   if(clr1 != clr2){
       var clr3=s.getRange("R2:V2").setBackground(clr1)
   }}

当条件格式更改D2或其他函数的背景颜色(函数需要调用onChange())时,这也很有用。