Google App脚本replaceText仅替换匹配字符串的第一个匹配项

时间:2018-08-10 09:31:01

标签: google-apps-script google-docs-api

我想使用Google Appscript替换我的Google文档中的文本,以将其转换为PDF。但是问题是函数replaceText(textToReplace,newText);只需删除所有出现的匹配文本即可。我只想只删除第一次出现。该怎么做?

1 个答案:

答案 0 :(得分:1)

可以通过在元素上调用replaceText方法来限制该元素的范围。但是,如果找到文本的第一段包含多个实例,这将无济于事:它们都将被替换。

相反,使用findText查找第一个匹配项,然后调用deleteTextinsertText执行替换。

// replaces the first occurrence of old
function replaceFirst(old, replacement) {    
  var body = DocumentApp.getActiveDocument().getBody();
  var found = body.findText(old);
  if (found) {
    var start = found.getStartOffset();
    var end = found.getEndOffsetInclusive();
    var text = found.getElement().asText();
    text.deleteText(start, end);
    text.insertText(start, replacement);
  }
}

如果您认为这应该更容易,那么您并不孤单。