更改单元格中单个文本颜色的脚本


10

我有一个Google电子表格,其中包含数百名员工的时间表。每个单元格在该单元格中具有多个名称,如下所示:

First Last
First Last
First Last

First Last
First Last

许多名称用红色标记,而其他则保留黑色。我正在使用脚本删除多余的换行符,以将名称折叠为此(其中很多都是使用查找/替换来删除的,例如放假天,导致换行符为空):

First Last
First Last
First Last
First Last
First Last

问题是,当运行此脚本时,红色名称的字体更改为黑色。我想不出一种写for循环的方法来将单元格中的这些单独的行变成红色。我要么以单元格中的所有文本都为红色结束,要么以HTML代码表明它应该为红色。

关于如何进行这项工作的任何想法?


2
单元格内容的部分格式是Google表格的最新功能,它并未真正与电子表格逻辑的其余部分集成。特别是,公式和脚本不知道这种格式,也无法应用它。它们的输出不带有任何此类格式。

Answers:


2

目前,只有两种范围属性可以处理其内容:值和公式。不幸的是,使用它们更改单元格内容会删除应用于部分内容的格式。

在这种情况下,用户可以查看Google Apps脚本问题跟踪器以搜索功能请求,并且如果没有人提交请求。如果您要查找的功能已经存在功能请求,请对其加注星标,因为Google Apps脚本小组会考虑为该功能请求加注星标的人数来确定优先级。

请为以下功能请求加注星标

问题6000:以编程方式处理单元内容的某些部分


2

更新:这篇文章中提到的方法现在包含在2019年1月22日发行说明中

有人发现与该问题相关的未记录方法和共享示例。

注释21我先前的回答中以编程方式处理单元内容的部分。

您还可以获取单元格文本不同部分的样式不同的当前单元格格式:

  var richText = ss.getCurrentCell().getRichTextValue();
  var runs = richText.getRuns();
  for (var i=0; i<runs.length; i++)
  {
    // get the style of this section of text, between startIndex and endIndex
    var run = runs[i];
    var startIndex = run.getStartIndex();
    var endIndex = run.getEndIndex();
    var styleBold = run.getTextStyle().isBold();
  }

新方法可能会在本周首先在旧金山的Google Cloud Next 18上发布,然后在Google Developers Blog上发布。

有关

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.