方法findText()卡在Google文档的第一段

Method findText() stuck in first paragraph of Google Document

本文关键字:一段 Google findText 卡在 方法 文档      更新时间:2023-09-26

我正在尝试在Google文档中查找某些单词,以便通过脚本格式化它们。问题是,似乎 findText() 只能在第一段中找到单词。如果它在其他地方,findText() 会发疯并给我(看似)单词的随机位置。以下是它的编码方式:

function findBoldMarks(){
  var doc = DocumentApp.openById('docId');
  var docText = doc.editAsText();
  // search initial bold markup 
  var srcB0 = body.findText('bold0');
  var idB0 = srcB0.getStartOffset();
  // search final bold markup 
  var srcB1 = body.findText('bold1');
  var idB1End = srcB1.getEndOffsetInclusive();
  // set markup and text wrapped within bold markup as bold
  docText.setBold(idB0, idB1End, true);
}

我觉得我一定忽略了一些基本的东西,但是经过几个小时的挣扎,我不再确定。我很欣赏任何想法。谢谢!

要在第一次出现之后继续搜索,您需要将搜索包装在循环中,并在findText()中提供第二个"from"参数。

下面是一个仅搜索 1 个单词的示例的开头...

function findBoldMarks(){
  var body = DocumentApp.getActiveDocument().getBody();
  var pattern = "bold0";
  var searchResult = body.findText(pattern);
  var style = {};
  style[DocumentApp.Attribute.BOLD] = true;
  while (searchResult !== null) {
    var thisElement = searchResult.getElement();
    var thisElementText = thisElement.asText();
    thisElementText.setAttributes(searchResult.getStartOffset(), searchResult.getEndOffsetInclusive(),style);
    // search for next match
    searchResult = body.findText(pattern, searchResult);
  }
}

。来自这篇文章中的一些答案。

也许有人可以修改以包含两个搜索词之间的文本。 findText()似乎不接受正则表达式搜索模式,因此可能需要另一种方法来执行此操作。