微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 google docs 中绘制某些单词 - Google Apps Script

如何解决在 google docs 中绘制某些单词 - Google Apps Script

我在下面有这个代码

        var textToHighlight = 'normal';
        var highLightStyle = {};
        highLightStyle[DocumentApp.Attribute.FOREGROUND_COLOR] = '#FFC0CB';
        var paras = doc.getParagraphs();
        var textLocation = {};

        for (i=0; i<paras.lenght; i++) {
          textLocation = paras[i].findText(textToHighlight);
          if (textLocation != null && textLocation.getStartOffset() != -1) {
            textLocation.getElement().setAttributes(textLocation.getStartOffset(),textLocation.getEndOffsetInclusive(),highLightStyle);
          }
        }

有了它,我想为文档中出现的所有“正常”字词着色,但是当我运行代码时,没有任何反应,也没有指责任何错误,它正常编译。

我尝试了另一个代码

        let pinkColor = "#FFC0CB"
        let pinkElements = body.findText("normal")
        let elem = pinkElements.getElement().asText();
        let t = elem.getText();
        elem.setForegroundColor(t.indexOf('normal'),t.indexOf('High')+3,pinkColor)

但是对于上面的代码,它只绘制了它找到的第一个单词“正常”,其余的保持中立。

有人知道这两个代码会发生什么吗?

解决方法

有人知道这两个代码会发生什么吗?

代码 1:

您打错了,lenght 应该是 length

代码 2:

请看下面我的回答。

说明:

您需要使用特定关键字遍历所有元素。

要实现这一点,您需要按照以下步骤操作:

  1. 获取第一个找到的元素:

    pinkElement = body.findText(searchWord);

  2. 检查是否存在带有 searchWord 的元素

  3. 为这个元素做一些代码

  4. 分配一个新元素,它是您之前找到的下一个元素:

    pinkElement = body.findText(searchWord,pinkElement);

  5. 重复步骤 1-4 直到没有其他元素:

    while (pinkElement != null)

解决方案:

function myFunction() {
   let doc = DocumentApp.getActiveDocument();
   let body = doc.getBody();
   let pinkColor = "#FFC0CB";
   let searchWord = "Normal";
   let pinkElement = body.findText(searchWord);
   while (pinkElement != null) {
     let elem = pinkElement.getElement().asText();
     let t = elem.getText();
     elem.setForegroundColor(t.indexOf(searchWord),t.indexOf('High')+3,pinkColor);
     pinkElement = body.findText(searchWord,pinkElement);
   }
}
,

我很惊讶它返回了第一个。 “长度”在这一行拼写错误:

for (i=0; i<paras.**lenght**; i++) {

看看是否将其更改为“.length”可以修复它。如果没有,您可以使用 Class Range 处的文档中的类似示例。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。