首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google基于文本值自动设置单元格的背景色

Google基于文本值自动设置单元格的背景色
EN

Stack Overflow用户
提问于 2022-05-26 13:20:11
回答 2查看 376关注 0票数 2

是否可以根据单元格的文本值自动更改单元格的背景?这些值将用于任意数量的值,而不仅仅是预定义的。其想法是根据文本值生成“散列”,然后根据该散列随机选择颜色。它是什么颜色并不重要,只要不同的值有不同的颜色可以很容易地区分。

例如,假设单元格具有以下值:

  • 鼠标

它们都有不同的背景色,因为它们包含不同的文本值。实际的背景色并没有什么区别。理想的情况是,如果背景颜色是‘暗’,文本颜色将是白色,如果背景颜色是‘光’,文本颜色将是黑色。这样你就可以随时阅读课文了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-26 14:40:10

这是我对这个问题的近似:

代码语言:javascript
复制
const sS = SpreadsheetApp.getActiveSheet()
const docProperties = PropertiesService.getDocumentProperties()

function colorTheDifference() {
  const { getRow, getNumRows, getColumn, getNumColumns } = sS.getDataRange()
  const [rw, nRw, cl, nCl] = [getRow(), getNumRows(), getColumn(), getNumColumns()]
  const values = sS.getRange(rw, cl, nRw, nCl).getValues()
  for (let i = rw; i <= nRw; i++) {
    for (let j = cl; j <= nCl; j++) {
      const word = values[i - 1][j - 1]
      if(!word) continue
      sS.getRange(i, j).setBackground(saveColor(word))
    }
  }
}

function saveColor(word) {
  if (docProperties.getKeys().includes(word)) {
    return docProperties.getProperty(word)
  } else {
    const randomColorPick = randomColor()
    docProperties.setProperty(word, randomColorPick)
    return randomColorPick
  }
}

// https://stackoverflow.com/a/5092846/14271633
const randomColor = () => '#' + (Math.random() * 0xFFFFFF << 0).toString(16).padStart(6, '0');

function onOpen() {
  // colorTheDifference()
  SpreadsheetApp
    .getUi()
    .createMenu('Custom Menu')
    .addItem('Color It', 'colorTheDifference')
    .addToUi()
}

脚本分析所有的单元格值,在DocumentProperties中将它们与随机颜色相关联(当样本大小增加时,这可能会导致某种问题,并且应该实现一个控件来检查这种颜色是否存在),然后将该颜色添加到单元格中。

如您所见,我将其添加到菜单中的一个函数中,但可以在onOpen中调用它,以便在打开文档时直接解析它,或者将其与onEdit关联(我认为这将是过度的)。

这不是解决问题的最佳方法,应该朝着batchUpdate的方向发展。

票数 2
EN

Stack Overflow用户

发布于 2022-05-26 19:50:01

有趣的问题。

我编写了一些东西,使用onEdit()函数根据某一列中的值格式化/突出显示/着色给定的行/范围。

当我完成完整的文档记录之后,我将在下面发表评论,但希望能够很容易地找到如何调整userParams对象。

在这张样品单上试一试。B列中的值将根据“图例”的背景/字体颜色/text样式突出显示行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72392510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档