【问题标题】:Highlight Rows based on Active Cell But background color shouldn't remove基于活动单元格突出显示行但不应删除背景颜色
【发布时间】:2021-02-03 08:36:40
【问题描述】:

使用下面的代码运行良好,但有一件事是错误的,我一直试图删除这么久但找不到解决问题的方法。

问题是当我运行代码并将光标移动到任何单元格时,它会删除活动工作表的所有背景颜色。我不想删除背景颜色。

找到一个解决方案,在任何单元格上移动光标,如果我移动到其他单元格的上方或下方,只需突出显示具有所选颜色的行,不应删除背景颜色。

   function onSelectionChange(e) {
  const range = e.range;
  const sheet = range.getSheet();
  const maxRows = sheet.getMaxRows();
  const maxColumns = sheet.getMaxColumns();
  sheet.getRange(2, 1, maxRows - 1, maxColumns).setBackground(null);
  if (range.getRow() > 1) {
    sheet.getRange(range.getRow(), 1, 1, maxColumns).setBackground("#c9daf8");
  }
}

【问题讨论】:

    标签: javascript google-apps-script google-sheets


    【解决方案1】:

    说明 - 基于 OPs cmets 更新:

    • OP 想要设置 white 单元格的背景颜色#ffffff 蓝色#c9daf8
    • 但是如果该行包含其他颜色而不是白色,他希望保留这些背景颜色并且只更改背景白色单元格的颜色。
    • 实现此目的的一种方法是获取当前背景颜色并使用map() 将白色#ffffff 替换为#c9daf8

    const bc = range_row.getBackgrounds().flat().map(c=>c=='#ffffff'?'#c9daf8':c);


    解决方案:

    function onSelectionChange(e) {
      const range = e.range;
      const sheet = range.getSheet();
      const maxRows = sheet.getMaxRows();
      const maxColumns = sheet.getMaxColumns();
      if (range.getRow() > 1) {
        const range_row = sheet.getRange(range.getRow(), 1, 1, maxColumns);
        const bc = range_row.getBackgrounds().flat().map(c=>c=='#ffffff'?'#c9daf8':c);
        range_row.setBackgrounds([bc]);
      }
    }
    

    【讨论】:

    • Marios 我已经尝试过了,但是在删除此行后,突出显示的行颜色不会被删除,它仍保留在工作表上 docs.google.com/spreadsheets/d/… 请看一下。
    • 这就是你想要的吧? if I moved to other cell upper or lower, Background color should not be removed. @Shazir 上面的脚本 does not 如果单击单元格,则删除背景颜色。
    • @Shazir 请清楚说明您想要什么。您是否要删除其他单元格的背景颜色?根据您的问题,我了解到您不想删除它。另一方面,如果您想删除它,那么您的代码就可以正常工作。请提供详细信息,以便我们为您提供帮助。
    • 当我将光标移动到任何单元格时,我已经为 A 列添加了颜色,单元格的颜色将被删除。
    • 问题是如果我将光标移动到第 6 行,如果 Col A、B、C 和 D 有红色,那么红色将被移除,并且脚本颜色将在整个行上粘贴,即使在移动之后光标脚本颜色未删除。
    猜你喜欢
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多