我创建了一个带有脚本的Google表单,该脚本会在有人填写表单时自动将数据发送到特定的电子邮件。一切都运行正常,因为脚本完成了它应该做的事情。
这是整个代码
function forwardEmail(e) {
var forwardEmail = "myemail@myemail.com";
var senderEmail = e.values[1];
var senderName = e.values[2];
var senderLocation = e.values[3];
var senderType = e.values[9];
var studentName = e.values[4];
var broadLeafId = e.values[5];
var cVueId = e.values[6];
var studentCampus = e.values[10];
var issueCategory = e.values[8];
var description = e.values[7];
var subject = "FS Support: " + issueCategory + " - " + studentName;
var message = "\n Response Summary: \n\n Sender Information: \n Contact Name: " + senderName +
"\n Contact Email: " + senderEmail +
"\n Location: " + senderLocation +
"\n Employee Type: " + senderType +
"\n\n Student Information: \n Student Name: " + studentName +
"\n BroadLeaf ID: " + broadLeafId +
"\n CampusVue ID: " + cVueId +
"\n Student Campus: " + studentCampus +
"\n\n Incident Information: \n Issue Category: " + issueCategory +
"\n Comments: " + description +
MailApp.sendEmail(forwardEmail, subject, message);
上面的代码按原样运行。
现在,我想使用相同的表单/脚本来包含/发送附件。我从本教程https://www.youtube.com/watch?v=f2xPgUhcPqc得到了这个想法。我不希望使用特定ID分配“静态”文件,而是希望脚本获取随表单上传的文件的ID,并将其包含在同一封电子邮件中。所以我修改了脚本:
function forwardEmail(e) {
var forwardEmail = "myemail@myemail.com";
var senderEmail = e.values[1];
var senderName = e.values[2];
var senderLocation = e.values[3];
var senderType = e.values[9];
var studentName = e.values[4];
var broadLeafId = e.values[5];
var cVueId = e.values[6];
var studentCampus = e.values[10];
var issueCategory = e.values[8];
var description = e.values[7];
var fileUrl = e.values[11];
var fileId = fileUrl.split('id=')[1];
Logger.log(fileId)
var subject = "FS Support: " + issueCategory + " - " + studentName;
var message = "\n Response Summary: \n\n Sender Information: \n Contact Name: " + senderName +
"\n Contact Email: " + senderEmail +
"\n Location: " + senderLocation +
"\n Employee Type: " + senderType +
"\n\n Student Information: \n Student Name: " + studentName +
"\n BroadLeaf ID: " + broadLeafId +
"\n CampusVue ID: " + cVueId +
"\n Student Campus: " + studentCampus +
"\n\n Incident Information: \n Issue Category: " + issueCategory +
"\n Comments: " + description +
"\n\n Attachment: " + fileUrl +
"\n Google Doc ID: " + fileId;
var attachment = DriveApp.getFileById(fileId);
var attachment_type = attachment.getAs(MimeType.JPEG);
MailApp.sendEmail(forwardEmail, subject, message, {attachments: [attachment_type]});
记录器部分工作,因为它能够提取ID,问题是它只是在我添加和修改这部分时停止发送电子邮件:
var attachment = DriveApp.getFileById(fileId);
var attachment_type = attachment.getAs(MimeType.JPEG);
MailApp.sendEmail(forwardEmail, subject, message, {attachments: [attachment_type]});
有没有人知道如何使这项工作?我正在考虑做一个“时间驱动”的触发器(而不是“on form suhbmit”),以确保在发送电子邮件之前该文件确实在Google云端硬盘中。
答案 0 :(得分:1)
试试这个:
var file = DriveApp.getFileById(FileId);
var blob = Utilities.newBlob('Insert any HTML content here', 'text/html', 'my_document.html');
MailApp.sendEmail('myemail@myemail.com', 'Attachment example', '', {
attachments: [file.getAs(MimeType.JPEG), blob]});