【问题标题】:Match background color of another cell匹配另一个单元格的背景颜色
【发布时间】:2016-12-29 20:56:04
【问题描述】:

我正在使用 Google 电子表格,我正在尝试执行以下操作:

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

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

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

谢谢!

【问题讨论】:

    标签: google-sheets


    【解决方案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())。

    【讨论】:

      【解决方案2】:

      简短的回答是你不能

      长答案:

      如果您查看用于自定义函数的 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

      【讨论】:

      • 我想知道您是否可以通过覆盖 onEdit perchance 作为事件挂钩的结果?根据Auth-Mode documentation,这将为您提供更多权限,但它可能包括适当的权限。
      • @Atreys 我也在调查这个问题,但我没有运气这样做。我确信有办法,但这样做的复杂性可能不值得付出努力。
      • 范围限制可以防止一个单元格中的代码影响另一个单元格,但是如果您将脚本移到单元格之外,您可能能够绕过安全性:stackoverflow.com/questions/24424977/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-12
      • 2015-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多