Intereting Posts
Как запустить инструкцию bind_param () в PHP? PHP array_push один массив в другой PHP: как использовать сеанс на одной странице, пока загружается другая страница с sesson PHP / PDO MySQL отключает соединение, если пользовательская функция используется в длинном запросе Woocommerce: отображение описания продукта на странице в корзине Принять для новой строки, но фильтровать html-теги в php получать вывод из java DataOutputStream на php-странице Лучший способ сжать HTML, CSS и JS с mod_deflate и mod_gzip отключен Msgstr "Не удалось проверить файл php. Программа php не найдена " Как найти следующий числовой индекс существующего массива? создать db и пользовательский mysql и установить привилегии php Как установить доступ по умолчанию для доступа к типу страницы в Silverstripe? Как предотвратить множественные вставки при отправке формы в PHP? Повернуть отчет об ошибках на xampp PHP DOMDocument перемещает узлы из документа в другой

Google Script отправляет значения формы по электронной почте, ошибка: невозможно прочитать свойство "namedValues"

Ключ проекта: MyvPlY2KvwGODjsi4szfo389owhmw9jII

Я пытаюсь запустить сценарий, который отправляет содержимое моей формы по электронной почте каждый раз при отправке формы. Я следил за инструкциями по этой ссылке ниже, пока я не начал получать ошибки, и я получил совет по изменению моего сценария, чтобы открыть электронные таблицы по id:

http://www.snipe.net/2013/04/email-contents-google-form/

Когда я заполняю форму, она должна отправить электронное письмо на мой адрес электронной почты.

Проблема, которую я сейчас вижу, заключается в том, что функция, которая проходит через значения формы, не работает. Он возвращает ошибку «TypeError: невозможно прочитать свойство« namedValues ​​»из undefined. (Строка 15, файл« Код »)» в отношении фрагмента кода ниже:

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

Я не слишком хорошо знаком с скриптами Google, поэтому я не уверен, как обойти эту проблему. Есть ли что-нибудь, что вы рекомендуете? Я включил весь сценарий ниже.

 function sendFormByEmail(e) { // Remember to replace this email address with your own email address var email = "sample@email.com"; var s = SpreadsheetApp.openById("1hOqnK0IVa2WT6-c-MY0jyGGSpIJIV2yzTXdQYX4UQQA").getSheets()[0]; var headers = s.getRange(1,1,1,s.getLastColumn()).getValues()[0]; var message = ""; var subject = "New User Form"; // 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. // In this case, I wanted the new hire's name and start date as part of the // email subject. These are the 3rd and 16th columns in my form. // This creates an email subject like "New Hire: Jane Doe - starts 4/23/2013" subject += e.namedValues[headers[2]].toString() + " - starts " + e.namedValues[headers[15]].toString(); // Send the email MailApp.sendEmail(email, subject, message); } 

Функция, как представляется, не определена, поскольку «e» не принимается как часть контекста функции. Вам необходимо установить триггер для отправки формы и отправить информацию функции. Вы можете использовать следующий код:

 /* Send Confirmation Email with Google Forms */ function Initialize() { var triggers = ScriptApp.getProjectTriggers(); for (var i in triggers) { ScriptApp.deleteTrigger(triggers[i]); } ScriptApp.newTrigger("SendConfirmationMail") .forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet()) .onFormSubmit() .create(); } function SendConfirmationMail(e) { try { var ss, cc, sendername, subject, columns; var header, message, value, textbody, sender, itemID, url; // This is your email address and you will be in the CC cc = "name@email.com"; // This will show up as the sender's name sendername = "name to be displayed as sender"; // Optional but change the following variable // to have a custom subject for Google Docs emails subject = "Choose an approppiate subject"; // This is the body of the auto-reply message = ""; ss = SpreadsheetApp.getActiveSheet(); columns = ss.getRange(1, 1, 1, ss.getLastColumn()).getValues()[0]; // This is the submitter's email address sender = e.namedValues["Username"].toString(); // Only include form values that are not blank for ( var keys in columns ) { var key = columns[keys]; //Use this to look for a particular named key if ( e.namedValues[key] ) { if ( key == "Username" ) { header = "The user " + e.namedValues[key] + " has submitted the form, please review the following information.<br />"; } else { message += key + ' ::<br /> '+ e.namedValues[key] + "<br />"; } } } } textbody = header + message; textbody = textbody.replace("<br>", "\n"); Logger.log("Sending email"); GmailApp.sendEmail(cc, subject, textbody, {cc: cc, name: sendername, htmlBody: textbody}); } catch (e) { Logger.log(e.toString()); } } 

В этой строке кода есть ошибка:

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

это эта часть:

 e.namedValues[headers[i]].toString() 

Я просто догадываюсь, что вы хотите:

 e.namedValues + [headers[i]].toString() 

Если вы хотите объединить значения, вам не будет знака «плюс».