我有一個簡單的腳本,一旦表單提交就會執行。這是一個簡單的測驗腳本,為電子郵件應用了 html。
function sendEmail(e) {
//response
//getRespondentEmail()
var html = HtmlService.createTemplateFromFile("email.html");
var htmlText = html.getCode();
var emailTo = e.response.getRespondentEmail();
var subject = "Thanks for participating";
var textBody = "This email requries HTML support, please maek sure you open with a client taht support.";
var options = { htmlBody: htmlText };
if(emailTo !== undefined){
GmailApp.sendEmail(emailTo,subject,textBody,options);
//(recipient, subject, body, options)
}
}
但它總是注意到 TypeError: Cannot read property 'response' of undefined。
TypeError: Cannot read property 'response' of undefined (line 8, file "Code")
或者我的主機電子郵件回復說“無法發送電子郵件:沒有收件人”

我不知道為什么它不起作用,但我看到有人通過上面的谷歌應用程式腳本成功申請。
uj5u.com熱心網友回復:
'e' 未定義:
型別錯誤:無法讀取未定義的屬性“回應”
此錯誤表示引數e未定義。這意味著該函式不是通過觸發器執行的。
當函式被觸發器呼叫時,函式被傳遞一個事件物件作為引數。但是在其他背景關系中(例如,在從編輯器手動執行此操作時)不會傳遞此引數。
因此,這個函式應該在用戶提交表單時自動執行。如果您e在函式內部使用,請不要嘗試從編輯器手動執行它。
沒有收件人:
無法發送電子郵件:沒有收件人
這意味著emailTo未定義,這意味著getRespondentEmail()不回傳任何內容。
這可能有兩個原因:
- 腳本創建了表單回應,但未提交。但是,由于這是通過表單提交觸發器執行的,因此這不是您的情況。
- 另一個原因,很可能是這里發生的事情,是您沒有啟用收集電子郵件地址的選項。您可以通過呼叫Form.setCollectEmail(collect)或通過 UI,按照收集受訪者的電子郵件地址中的指南以編程方式執行此操作。
有關的:
- 如何在 GAS 中測驗觸發功能?
- 事件物件
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/361446.html
上一篇:谷歌表格多個密碼
