2012-03-22 3 views
0

Я создал форму, используя Google Docs таблицу, и создал скрипт, который отправляет по электронной почте, когда пользователь заполняет форму:Google Docs Spreadsheet, Отправить на e-mail и порядок Значения

 
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 для (... in ...) выполняется в произвольном порядке. Его рекомендации по документации, чтобы не использовать его, если заказ имеет значение. –

ответ

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

Будьте осторожны, порядок столбцов может отличаться от порядка полей, особенно после редактирования формы и добавления и удаления полей. –

+0

Согласовано, но в таких случаях легко просто перейти в электронную таблицу и отсортировать столбцы в нужном порядке. Поскольку API для Google Forms отсутствует, единственный способ узнать фактический порядок - это проанализировать html. –

+0

Подождите, вы не сможете изменить порядок столбцов, Forms будет продолжать писать ответы на тех же позициях, и у вас будут смешанные поля. –