Google apps script 修改Google文档模板,然后在填写Google表单时将其作为docx发送到电子邮件中
我正试图用谷歌表单提交的相关信息修改模板文档,然后以word文档的形式向填写表单的人发送一封包含已填写文档的电子邮件。我可以设法更新模板,甚至可以将其附加为pdf格式,但它需要由接收者进行编辑,因此这不是一个真正的选项。这是我的密码:Google apps script 修改Google文档模板,然后在填写Google表单时将其作为docx发送到电子邮件中,google-apps-script,Google Apps Script,我正试图用谷歌表单提交的相关信息修改模板文档,然后以word文档的形式向填写表单的人发送一封包含已填写文档的电子邮件。我可以设法更新模板,甚至可以将其附加为pdf格式,但它需要由接收者进行编辑,因此这不是一个真正的选项。这是我的密码: //Set template variables var docTemplate = "1_l4T-MVXYXWPvirgE9aE25hKOejTqf9AcfHCKRC67Fk"; var docName = "Editorial Briefing Form";
//Set template variables
var docTemplate = "1_l4T-MVXYXWPvirgE9aE25hKOejTqf9AcfHCKRC67Fk";
var docName = "Editorial Briefing Form";
//Get pertinent info from form
function onFormSubmit(e) {
var timeStamp = e.values[1];
var RequestorName = e.values[2];
var Account = e.values[3];
var JobNumber = e.values[4];
var Files = e.values[6];
var StartDate = e.values[7];
var BudgetHours = e.values[8];
var ActualDeadline = e.values[10];
var Email = e.values[11];
// Get template and save a copy with a new name
var copyId = DriveApp.getFileById(docTemplate)
.makeCopy(docName+' for '+RequestorName)
.getId();
var copyDoc = DocumentApp.openById(copyId);
var copyBody = copyDoc.getActiveSection();
//replace tags with form info
copyBody.replaceText('keyAccount', Account);
copyBody.replaceText('keyJobNumber', JobNumber);
copyBody.replaceText('keyStartDate', StartDate);
copyBody.replaceText('keyRequestorName', RequestorName);
copyBody.replaceText('KeyFiles', Files);
copyBody.replaceText('KeyBudgetHours',BudgetHours);
copyBody.replaceText('KeyActualDeadline', ActualDeadline);
copyDoc.saveAndClose()
MailApp.sendEmail(Email, 'test', 'see attachment', {attachments:[copyDoc]});
}
我在网上看到的唯一一件事就是谷歌OAuth,但我对此一无所知
任何帮助都将不胜感激
谢谢
汤姆我刚刚想出了类似的办法。我无法从onFormSubmit(e)中让它工作,但我将它设置为在表单提交时作为电子表格的触发器运行,然后告诉它获取最后一行数据,因为表单提交将数据放在最后一行(除非您有另一个脚本排序)。因此,我的代码如下所示:
function FormSubmitEmail(){
var templateid = "your template id here";
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var row = sheet.getLastRow();
var data = sheet.getRange(5,1,sheet.getLastRow()-1,sheet.getLastColumn()).getValues();
var today = Utilities.formatDate(new Date(), "CST", "MM/dd/yy");
var firstname = sheet.getRange("B"+row).getValues();
var lastname = sheet.getRange("C"+row).getValues();
var docname = (lastname+", "+firstname+" "+today);
var folder = DriveApp.getFolderById("I have mine saving a copy also to a folder, your folder ID here");
var docid = DriveApp.getFileById(templateid).makeCopy(docname, folder).getId();
Logger.log(docid);
var doc = DocumentApp.openById(docid);
var body = doc.getActiveSection();
body.replaceText("%DateCreated%",(sheet.getRange("A"+row).getValues()));
body.replaceText("%FirstName%",(sheet.getRange("B"+row).getValues()));
body.replaceText("%LastName%",(sheet.getRange("C"+row).getValues()));
body.replaceText("%EmailAddress%",(sheet.getRange("M"+row).getValues())); //etc.
doc.saveAndClose();
var message = "See attached, or find in folder: https://drive.google.com/drive/folders/[your folder id here]"; // Customize message
var emailTo = "email2@gmail.com, email1@gmail.com" // replace with your email
var subject = "A form has been submitted!."; // customize subject
var pdf = DriveApp.getFileById(docid).getAs('application/pdf').getBytes();
var attach = {fileName:'Autogenerated template.pdf',content:pdf, mimeType:'application/pdf'}; // customize file name: "Autogenerated template"
MailApp.sendEmail(emailTo, subject, message, {attachments:[attach]});
}
你可以考虑使用AdDon。它使用模板自动将Google表单提交转换为任何文件格式,包括.docx文件。(免责声明:我是作者)