我目前正在做一個專案,我讓用戶填寫一個簡單的姓名、電子郵件地址表格并上傳一個 pdf。
提交表單時,該表單的目標 GSheet 會包含上傳的 PDF 的姓名、電子郵件地址和 URL。提交表單后,我可以自動回復一封帶有 html 的電子郵件,上面寫著“已收到您提交的帶有附件的表單”。但是是否可以僅使用 URL 將上傳的 pdf 附加到該電子郵件中?我找不到 GetFileByURL 的 ClassDrive。只能找到 getfilebyname/type。
我可以想到另一種方法,即讓用戶手動輸入表單中正在上傳的檔案的名稱,并讓谷歌應用程式腳本獲取檔案名。然而,我正在努力避免人為錯誤。人為錯誤,例如上傳的檔案名與表單中鍵入的檔案名不匹配。:)
function onSubmit(e) {
var ss = SpreadsheetApp.getActive();
var range = e.range
var row = Number(range.getRow());
var upFolder = DriveApp.getFolderById("ADDRESS OF WHERE THE UPLOADED FILE FROM THE FORM IS");
var formReceived = HtmlService.createTemplateFromFile("HTML Email"); //get the html template
var parent_name = ss.getRange('B' row).getValue();
var parent_email = ss.getRange('C' row).getValue();
var fileURL = ss.getRange('D' row).getValue();
ss.getRange('E' row).setValue("Error! Email not sent.");
//Tag input into the html
formReceived.parent_name=parent_name
//Once the form is submitted, the URL will show up on the Gsheet
//in column D. Is there a way to attach the file from that URL into the mailapp below.
//Not using the line below (getfilesbyname).
var invoicereceipt = upFolder.getFilesByName("Can be manual input from form");
if(invoicereceipt.hasNext()){
MailApp.sendEmail({
to: parent_email,
name: parent_name,
htmlBody : formReceived.evaluate().getContent(),
attachments: [invoicereceipt.next().getAs(MimeType.PDF)],
});
var now = new Date()
var k = Utilities.formatDate(now,'GMT 8',"YYYY.MM.dd HH:mm:ss")
ws.getRange('E' index).setValue(k);
}
}
uj5u.com熱心網友回復:
我相信你的目標如下。
- 您想在提交 Google 表單時發送電子郵件。此時,您要將上傳的 PDF 檔案附加到電子郵件中。
- 您的腳本存在于與 Google 表單鏈接的 Google 電子表格中。
- 您的函式
onSubmit安裝為 OnSubmit 可安裝觸發器。
改裝要點:
- 不包括電子郵件標題。在這種情況下,會發生錯誤。
ws,index未宣告。- 在這種情況下,我認為可以使用事件物件。
當這些點反映到腳本中時,它變成如下。
修改后的腳本:
function onSubmit(e) {
var [, parent_name, parent_email, fileURL] = e.values;
var formReceived = HtmlService.createTemplateFromFile("HTML Email");
formReceived.parent_name = parent_name;
MailApp.sendEmail({
subject: "sample mail",
to: parent_email,
name: parent_name,
htmlBody: formReceived.evaluate().getContent(),
attachments: [DriveApp.getFileById(fileURL.split("=").pop())],
});
// e.range.offset(0, 1).setValue("Error! Email not sent."); // I'm not sure whether you want to use this line.
}
上傳的 PDF 檔案由 檢索
DriveApp.getFileById(fileURL.split("=").pop())。在這種情況下,請洗掉可安裝的 OnSubmit 觸發器并重新安裝。這樣,附加的范圍就包括在內。
筆記:
- 這是一個簡單的修改腳本。所以請根據您的實際情況進行修改。
參考:
- 事件物件
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/355749.html
