0

我正在尝试在 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);
}

我觉得我必须在这里忽略一些基本的东西,但是经过几个小时的努力,我不再确定了。我很感激任何想法。谢谢!

4

1 回答 1

0

要在第一次出现之后继续搜索,您需要将搜索包装在循环中并在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()接受正则表达式搜索模式,因此可能需要另一种方法来做到这一点。

于 2013-10-26T15:25:34.540 回答