google-apps-script - Google应用程序脚本replaceText仅替换第一次出现的匹配字符串

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

我想使用 google appscript 替换我的 google 文档上的文本,将其转换为 PDF。但问题是函数replaceText(textToReplace, newText);只需删除所有出现的匹配文本即可。我只想删除第一次出现的情况。如何做到这一点?

最佳答案

通过在某个元素上调用 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);
  }
}

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

关于google-apps-script - Google应用程序脚本replaceText仅替换第一次出现的匹配字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51783382/

相关文章:

javascript - MailApp指定邮箱发件人

javascript - Google App 脚本中的 Else 语句语法错误

node.js - 如何自动化 Google Drive Docs OCR 功能?

google-apps-script - 使用正则表达式的方法 findText

javascript - 谷歌脚本: "Too complex regexp"

google-apps-script - 如何将格式化文本转换为 Google-apps-script 中的 html 标签?

google-apps-script - 批量插入google apps脚本

python - google API - python oauth2 应用程序身份验证

google-apps-script - 具有大量行的响应时间谷歌电子表格

google-drive-api - 谷歌电子表格批量更新很慢