首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google Docs脚本编辑器尝试从自动生成的文档自动生成电子邮件

Google Docs脚本编辑器尝试从自动生成的文档自动生成电子邮件
EN

Stack Overflow用户
提问于 2019-10-11 07:13:16
回答 1查看 55关注 0票数 1

我找到的关于这个主题的所有东西都包括在google文档中填充google表单,然后google文档会发送一封电子邮件。我个人将我在网络上找到的一些代码粘贴到一个文档的脚本编辑器中。现在,在打开文档时,系统会提示用户回答问题框。答案将自动填充已创建的新文档。然后,脚本要求发送一封电子邮件。

到目前为止,我的提示是正确的,创建了新文档,并正确地填写了提示框中的信息。我还让它发送一封电子邮件到1个地址,这是它应该做的所有事情。电子邮件的主题行也是正确的。问题是,我希望在脚本中创建的新Google文档成为电子邮件的正文,但我就是想不出如何实现这一点。

这是我在脚本编辑器中的代码。我在最后一行尝试了许多方法,以使新文档的正文填充电子邮件正文,但没有成功。有没有人能告诉我怎么做的编程语言?

代码语言:javascript
复制
    function myFunction() {
      // Display a dialog box for each field you need information for.

      var ui = DocumentApp.getUi();
      //var response = ui.prompt('Enter Name', 'Enter sales person's name', ui.ButtonSet.OK);
      var shiftResponse = ui.prompt('Enter shift, i.e. 7-3 or 3-11');
      var peersResponse = ui.prompt('Enter peers on shift');
      var participantsResponse = ui.prompt('Enter names of face to face encounters');
      var phonelogResponse = ui.prompt('Enter names of people we called on phone log');
      var filescreatedResponse = ui.prompt('Enter names of people we created files for');
      var notesResponse = ui.prompt('Enter any notes about shift');
      var cleanResponse = ui.prompt('Was Crisis Center Cleaned? Enter yes or no');
      var authorResponse = ui.prompt('Enter your name');
      var date = Utilities.formatDate(new Date(), "GMT", "MM/dd/yyyy");

      //Make a copy of the template file
      var documentId = DriveApp.getFileById('1lXTJPvwlJrXkRJ807daFsFbfaiC_wl7EAQ4giixLeEc').makeCopy().getId();

      //Rename the copied file
      DriveApp.getFileById(documentId).setName(date + " " + shiftResponse.getResponseText() + ' Shift Report');  

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

      //Insert the entries into the document
      body.replaceText('##date##', date);
      body.replaceText('##shift##', shiftResponse.getResponseText());
      body.replaceText('##peers##', peersResponse.getResponseText());
      body.replaceText('##participants##', participantsResponse.getResponseText()); 
      body.replaceText('##phonelog##', phonelogResponse.getResponseText());
      body.replaceText('##filescreated##', filescreatedResponse.getResponseText());  
      body.replaceText('##notes##', notesResponse.getResponseText());
      body.replaceText('##clean##', cleanResponse.getResponseText());
      body.replaceText('##author##', authorResponse.getResponseText());  

      MailApp.sendEmail("jason.chrystal@voicesofhopececilmd.org", "Shift Report", body);
    }
EN

回答 1

Stack Overflow用户

发布于 2019-10-11 07:23:58

正如它在文档中所述:

replaceText方法需要一个正则表达式模式值作为第一个参数:

https://developers.google.com/apps-script/reference/document/body#replacetextsearchpattern,-replacement

此外,MailApp.sendMail参数的最后一个参数需要一个字符串,而您为它提供了一个body类对象。

将您的第一个参数更改为正确的匹配正则表达式模式,您的代码将正常工作。

代码语言:javascript
复制
body.replaceText(/^##date##$/, date);
body.replaceText(/^##shift##$/, shiftResponse.getResponseText());
body.replaceText(/^##peers##$/, peersResponse.getResponseText());
etc...

-- regex未测试。

如果您不习惯使用正则表达式,可以使用body.setText()作为替代方法,如下所示:

代码语言:javascript
复制
var oldBodyText = body.getText();
body = body.setText(oldBodyText.replace('##date##', date));

oldBodyText = body.getText();
body = body.setText(oldBodyText.replace('##shift##', shiftResponse.getResponseText()));

oldBodyText = body.getText();
body = body.setText(oldBodyText.replace('##peers##', peersResponse.getResponseText()));

etc...

// And then the last lines:
var newBody = body.getText();
MailApp.sendEmail("jason.chrystal@voicesofhopececilmd.org", "Shift Report", newBody);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58332247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档