使用Google APP脚本从经过编辑的Google文档副本中获取ID

问题描述

我创建了一个脚本,该脚本在android应用程序上单击按钮后触发。

我编写的脚本获取了Google文档模板,并创建了一个副本以供日后编辑。 编辑后,我想向要插入应用程序中的电子邮件发送电子邮件

电子邮件应包含正文,主题和以pdf格式附加的文件。 我已经实现了发送包含pdf的电子邮件,但是它发送了模板的副本而无需进行编辑。

解决此问题的建议吗?

这是我的代码

//Make a copy of the template file
var templateID = DriveApp.getFileById('My Template ID').makecopy().getId();

//Rename The copied file
DriveApp.getFileById(templateID).setName(codigOperari + " - " + numero + " - " + operari + " - " + cliente + " - " + data);

//Get the document body as a variable    
var doc = DocumentApp.openById(templateID);
var body = doc.getBody();

//Edit the copy of the template
body.replaceText('<<C>>',codigOperari);
body.replaceText('<<NUMPARTE>>',numero);
body.replaceText('<<FECHA>>',data);
body.replaceText('<<CLIENTE>>',cliente);
body.replaceText('<<CORREO>>',e.parameter.ETEmail);
body.replaceText('<<ORDENTRABAJO>>',e.parameter.ETMotiu);
body.replaceText('<<OPERARIO>>',operari);

//A lot of data more

//Message to be sent
var message = {
    to: e.parameter.ETEmail,subject: "Subject",body: "This is a Test",name: "Name",attachments: [DocumentApp.getActiveDocument().getAs(MimeType.PDF)
.setName(codigOperari + " - " + numero + " - " + operari + " - " + cliente + " - " + data)]
  }
//Send Email
MailApp.sendEmail(message);

解决方法

我也给您写了评论,但我认为您的问题是您发送的是ActiveDocument,而不是编辑过的文档。

DocumentApp.getActiveDocument()只会返回脚本“锚定”到的文档。如果您打开Goog​​le文档或电子表格,请转到“工具”菜单,然后单击“脚本编辑器”,系统会为您提供与Google文档绑定的Apps脚本文件。您只能使用DocumentApp.getActiveDocument()在此Apps脚本中直接访问文档。尝试从其他任何地方编辑此Google文档都需要使用DocumentApp.openById()方法。

我的猜测是,一旦您运行var body = DocumentApp.openById(templateID),您就认为您实际上已经打开了文档并激活了它,这使您认为只需要做的就是附加“活动文档”。但是,这是错误的,因为您将永远只附加源文档。我假设这是模板。

您已经有了解决方案。您要发送的文档存储在doc变量中。 var doc = DocumentApp.openById()为您提供了一个无限期指向该电子表格的变量。您可以随时通过此变量访问此文档(之后您可以使用var body = doc.getBody()语句进行访问。

让我知道是否可以解决问题!