我看過其他類似的帖子,並得到了一些幫助正確設置觸發器,但仍然有錯誤。
我試圖自動發送一個PDF文件,通過電子郵件發送,以響應谷歌應用中的表單提交。我使用網絡上分享的腳本開始並修復了一些棄用的術語。
我創建了一個嵌入爲佔位符的keyItems
文檔模板,我創建了一個表單來捕獲數據。與表單關聯的電子表格按照計劃捕獲數據。我編輯了與電子表格相關的腳本,希望能夠完成提交表單所需的工作。觸發器正確設置爲運行on form submit
from the spreadsheet
。我的問題是關於我反覆詢問e.values
未定義的錯誤。我假設我將這些標籤標記爲e.values[0]
,並且當我聲明這些變量時 - 即它們將基於它們在從電子表格字段中繪製的數組中的順序。對不起長時間囉嗦。如果我將虛擬內容放置在它工作的變量中併發送pdf,所以實際機制工作正常,但我的e.values
不起作用。谷歌腳本e.values錯誤
這裏是我的腳本 //結業證書
//從谷歌文檔模板,並將其命名爲
var docTemplate = "1V_PqCBZ9vWmmIELp47X12iNtdwRCqHyOyey6VPL0o0Q";
var docName = "CertificateOfCompletion";
//當表單提交擺脫形式的信息,並設置爲變量
function onFormSubmit(e) {
var name = e.values[2];
var email = e.values[3];
var date = e.values[4];
//爲提交者創建模板doc的臨時工作副本
var copyId = DriveApp.getFileById(docTemplate).makeCopy(docName+' for '+name).getId();
//打開臨時文檔
var copyDoc = DocumentApp.openById(copyId);
//告訴腳本進入DOC
var copyBody = copyDoc.getBody();
//用數據替換佔位符的文檔從提交的表單
copyBody.replaceText('keyFullName', name);
copyBody.replaceText('keyDate', date);
copyDoc.saveAndClose();
//創建PDf
var pdf = DriveApp.getFileById(copyId).getAs("application/pdf");
//發送電子郵件至收件人
var subject = "Certificate";
var body = "Congratulations!" + name + " Here is your certificate of completion " ;
MailApp.sendEmail(email, subject, body, {htmlBody: body, attachments: pdf});
//刪除臨時文件
DriveApp.getFileById(copyId).setTrashed(true); }