2012-03-22 119 views
0

我創建了使用谷歌文檔電子表格形式,並創建了發送電子郵件時,用戶填寫表單的腳本:谷歌文檔電子表格,發送電子郵件和訂單值

 
function sendFormByEmail(e){ 

     var email = "AAA"; 
     var subject = "XXX"; 
     var message = ""; 
     for(var field in e.namedValues) 
     message += field + ' = '+ e.namedValues[field].toString() + "\n\n"; 

     var advancedArgs = {replyTo:e.namedValues['E-mail'].toString()}; 
     MailApp.sendEmail(email, subject, message, advancedArgs); 


} 

劇本的作品, 但是當它發送電子郵件,數據不會被排序爲表單的字段。

我該如何修改我的腳本來排序電子表格(表單)中的值?

+0

JavaScript的for(... in ...)以任意順序執行。其文檔建議如果訂單相關,不要使用它。 – 2012-03-27 14:38:38

回答

1

您可以從電子表格中獲取列順序。例如:

function sendFormByEmail(e){ 

     var email = "AAA"; 
     var subject = "XXX"; 
     var message = ""; 
     var s = SpreadsheetApp.getActive().getSheetByName("Sheet1"); 
     var headers = s.getRange(1,1,1,s.getLastColumn()).getValues()[0]; 
     for(var i in headers) 
     message += headers[i] + ' = '+ e.namedValues[headers[i]].toString() + "\n\n"; 

     var advancedArgs = {replyTo:e.namedValues['E-mail'].toString()}; 
     MailApp.sendEmail(email, subject, message, advancedArgs); 
} 

當然,您必須將工作表名稱Sheet1更改爲您的實際工作表名稱。順便說一下,我已經寫了一個腳本,可以做更多的事情,也許你想檢查一下(如果這不僅僅是一個編程練習)。它被稱爲FormEmailer,你可以在腳本庫和它的site中找到它。

+0

請注意,列順序可能與字段順序不同,特別是在編輯窗體並添加和刪除字段之後。 – 2012-03-27 14:35:49

+0

同意,但在這種情況下,只需轉到電子表格並按所需順序對列進行排序即可。由於Google表單沒有API,因此瞭解實際訂單的唯一方法就是分析html。 – 2012-03-28 12:28:48

+0

等待,您不能更改列的順序,表單將繼續在相同的位置上編寫答案,並且您將會混合字段。 – 2012-04-02 04:10:08