我发现的有关该主题的所有内容都包括让Google工作表填充Google文档,然后发送电子邮件。我个人已经将在网上找到的一些代码粘贴到文档的脚本编辑器中。现在,在打开文档时,提示用户回答问题框。答案将自动填充所创建的新文档。然后,脚本要求发送一封电子邮件。
到目前为止,我的提示正确无误,创建了新文档,并从提示框中正确填写了信息。我还得到了将其发送到1个地址的电子邮件的方法,这是我们应该做的所有事情。电子邮件的主题行也正确。问题是我希望在脚本中创建的新Google文档成为电子邮件的正文,而我只是想不出如何实现此目的。
这是我在脚本编辑器中拥有的代码。我已经在最后一行尝试了很多方法,以使新文档的正文填充电子邮件正文,但是没有运气。有人可以告诉我如何进行这项工作的编程语言吗?
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);
}
答案 0 :(得分:1)
文档中的内容:
replaceText方法期望将正则表达式模式值作为第一个参数:
MailApp.sendMail参数的最后一个参数也需要一个字符串,并且您为其指定了一个正文类对象。
将您的第一个参数更改为正确的匹配正则表达式模式,您的代码将正常工作。
body.replaceText(/^##date##$/, date);
body.replaceText(/^##shift##$/, shiftResponse.getResponseText());
body.replaceText(/^##peers##$/, peersResponse.getResponseText());
etc...
-正则表达式未经测试。
如果您对正则表达式不满意,可以使用body.setText()这样的替代方法:
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);