gpt4 book ai didi

google-apps-script - 使用 Google Apps Script 将标题样式应用于单词的所有实例

转载 作者:行者123 更新时间:2023-12-01 00:23:38 26 4
gpt4 key购买 nike

我在 Google Doc 中使用 Google App Scripts,您如何编写函数来查找单词的所有实例并对其应用标题样式:

例如,我想要“狗”的每个实例......

  • Cats
  • Dogs
  • Fish


并使用“标题 2”为“狗”设置样式,使其看起来像:

  • Cats
  • Dogs

  • Fish


使用 Find in App Scripts on Sheets 在网上随处可见,但在 Docs 中使用 App Scripts 的例子并不多。 Sheets 没有将文本重新格式化为标题的选项,因此没有示例。

最佳答案

使用方法有:

  • findText , 应用于文档正文。它找到第一个匹配项;通过将前一个匹配项作为第二个参数“from”传递,可以找到后续匹配项。搜索模式是一个以字符串形式呈现的正则表达式,在本例中为 (?i)\\bdogs\\b其中 (?i) 表示不区分大小写的搜索,而 \\b正在逃避 \b , 意思是词边界——所以我们不会将“hotdogs”和“dogs”一起重新命名。
  • getElement , 应用于 findText 返回的 RangeElement。重点是,匹配的文本只能是元素的一部分,这部分称为 RangeElement。我们不能仅将标题样式应用于一部分,因此会获得整个元素。
  • getParent , 应用于 getElement 返回的 Text 元素。同样,这是因为标题样式适用于文本上方的级别。
  • setAttributes使用适当的样式(使用适当的 enums 提前创建的对象)。这适用于 Text 的父级,无论它是什么——段落、项目符号等。人们可能希望对此更有选择性,并检查 type of the element首先,但我在这里不这样做。

  • 例子:
    function dogs() {
    var body = DocumentApp.getActiveDocument().getBody();
    var style = {};
    style[DocumentApp.Attribute.HEADING] = DocumentApp.ParagraphHeading.HEADING2;
    var pattern = "(?i)\\bdogs\\b";

    var found = body.findText(pattern);
    while (found) {
    found.getElement().getParent().setAttributes(style);
    found = body.findText(pattern, found);
    }
    }

    关于google-apps-script - 使用 Google Apps Script 将标题样式应用于单词的所有实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46675577/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com