2016-11-11 24 views
0

我發現了一些腳本並嘗試對其進行修改,以使其適用於我的用例但仍然遇到錯誤。基本上我有一個谷歌表單,當用戶提交時,我希望他們剛剛輸入的行被髮送到我的電子郵件。我不斷收到一個錯誤:「無法讀取屬性」namedValues「從undefined。(行14,文件」代碼「)」將Google表單中的值發送到電子郵件的腳本

任何幫助表示讚賞,謝謝!

function sendFormByEmail(e) 
{  
    var email = "[email protected]"; 

    var s = SpreadsheetApp.getActiveSheet(); 
    var headers = s.getRange(1,1,1,s.getLastColumn()).getValues()[0];  
    var message = ""; 
    var subject = "New Hire: "; 

    // The variable e holds all the form values in an array. 
    // Loop through the array and append values to the body. 

    for(var i in headers) 
    message += headers[i] + ': '+ e.namedValues[headers[i]].toString() + "\n\n";  

    // Insert variables from the spreadsheet into the subject. 
    subject += e.namedValues[headers[2]].toString() + " - starts " + e.namedValues[headers[15]].toString(); 

    // Send the email 
    MailApp.sendEmail(email, subject, message); 

} 
+0

實際上,我得到了這個工作使用下面的代碼,但是我怎麼修改這隻包括頭有一個值?所以如果它的空白,不要將它包含在消息中。現在其包括所有標頭甚至是那些沒有值: – Tai

+0

函數sendFormByEmail(E) { VAR電子郵件=「[email protected]‘; 變種S = SpreadsheetApp.openById(‘隨機’)’ VAR片= ().getSheets()[0]; var headers = sheet.getRange(1,1,1,sheet.getLastColumn())。getValues()[0]; var datarow = sheet.getRange(sheet.getLastRow() ,1,1,sheet.getLastColumn())。getValues()[0]; var message =「」; for(var i in headers) { message + =「」+ headers [i] +「 :「+ datarow [i] +」\ n \ n「; //Logger.log(消息); } MailApp.sendEmail(email,「Report」,message); } – Tai

回答

0

您可以檢查標題[i]爲空白,替代:

message += "" + headers[i] + " : " + datarow[i] + "\n\n"; 

有:

if (datarow[i] != "") { 
message += "" + headers[i] + " : " + datarow[i] + "\n\n"; 
} 

此外,如果您允許用戶編輯他們的反應那麼你的數據行將是不正確的。你可以使用:

var datarow = sheet.getRange(e.range.getRow(),1,1,sheet.getLastColumn())‌.getValues()[0]; 
+0

嗨,我試過這個,但我仍然得到一些沒有價值的標題的電子郵件。請在我的電子郵件中查看我的示例數據: – Tai

+0

詳細描述::是 請選擇類別:: URL:: – Tai

+0

數據在哪裏?您可以發佈電子表格的共享鏈接嗎? – utphx

相關問題