【发布时间】:2016-12-29 20:56:04
【问题描述】:
我正在使用 Google 电子表格,我正在尝试执行以下操作:
当我更改单元格 D2 的颜色时,如何获得一系列单元格 (R2:V2) 以匹配 D2 的背景颜色。
例如: 如果我将 D2 的背景颜色更改为红色。我希望单元格 R2 到 V2 格式化为相同的红色。
如果我将 D3 的背景颜色更改为绿色。我希望单元格 R3 到 V3 格式化为相同的绿色。
谢谢!
【问题讨论】:
标签: google-sheets
我正在使用 Google 电子表格,我正在尝试执行以下操作:
当我更改单元格 D2 的颜色时,如何获得一系列单元格 (R2:V2) 以匹配 D2 的背景颜色。
例如: 如果我将 D2 的背景颜色更改为红色。我希望单元格 R2 到 V2 格式化为相同的红色。
如果我将 D3 的背景颜色更改为绿色。我希望单元格 R3 到 V3 格式化为相同的绿色。
谢谢!
【问题讨论】:
标签: google-sheets
你可以用 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())。
【讨论】:
简短的回答是你不能。
长答案:
如果您查看用于自定义函数的 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 中运行时,您会得到以下信息:
根据他们的文档,他们是这样说的:
如果您的自定义函数抛出错误消息您没有 调用X服务的权限,该服务需要用户授权 因此不能在自定义函数中使用。
参考:https://developers.google.com/apps-script/guides/sheets/functions
【讨论】: