如何创建一个 google appscript 来复制现有的 Google 文档然后替换某些文本?

问题描述 投票:0回答:2

根据下面的代码,我期望 AppScript 复制我的文档,然后将 {{resultID}} 的所有实例替换为 12345。我收到错误。

function generateReport() {
    var doc = DriveApp.getFileById('asdfasdfasdfasdf').makeCopy('Document 1');
    var newDocID = doc.getId();
    var body = newDoc.getBody();
    body.newReplaceAllTextRequest('{{resultID}}','12345');
}

我尝试了上面的脚本,虽然它成功创建了文档的副本,但它不会替换文本。

google-apps-script google-drive-api google-docs
2个回答
0
投票

建议:使用
replaceText()

newReplaceAllTextRequest()
需要使用Docs V1 API。使用现有的
replaceText()
方法来代替要简单得多。

尝试用以下代码替换您的代码:

function generateReport() {
  var doc = DriveApp.getFileById('doc_id').makeCopy('Document 1');
  var newDocID = doc.getId();
  var body = DocumentApp.openById(newDocID).getBody();
  body.replaceText('{{resultID}}', '12345');
}

参考:


0
投票

您需要先使用 DocumentApp 打开新文档,然后才能对其进行编辑。 根据 to this post, 最好使用 <> 而不是 {{XXXX}

     function generateReport() {


            var originalFile = DriveApp.getFileById('*****FILE_ID_HERE*********')
            var copiedFile = originalFile.makeCopy('Document 1');
            var newDocID = copiedFile.getId();

            // Open de Document using DocumentApp now, so we can edit it.
            var newDoc = DocumentApp.openById(newDocID)
            var body = newDoc.getBody();

            // I've replaced the {{ by <<, because that can cause some troubles... The script might think you are trying to use a regex.  
            body.replaceText('<<resultID>>','12345');
    
            // Save and close the doc. (otherwise, changes won't be visible immediatly...)
            newDoc.saveAndClose()
        }
© www.soinside.com 2019 - 2024. All rights reserved.