首页 > 解决方案 > Google App Script replaceText仅替换第一次出现的匹配字符串

问题描述

我想使用 google appscript 替换我的 google doc 上的文本以将其转换为 PDF。但问题是函数 replaceText(textToReplace, newText); 只需删除每次出现的匹配文本。我只想删除第一次出现。怎么做?

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

解决方案


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

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

// 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);
  }
}

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


推荐阅读