2016-11-11 3 views
0

Я нашел несколько сценариев и попытался изменить его, чтобы он работал для моего прецедента, но продолжал работать с ошибками. В основном у меня есть форма google, и когда пользователь отправляет, я хочу, чтобы строка, которую они только что ввели, была отправлена ​​на мой адрес электронной почты. Я продолжаю получать сообщение об ошибке: «Невозможно прочитать свойство« 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 (е) { вара электронной почты = «[email protected]„; Var з = SpreadsheetApp.openById („случайного“)“ вара листа = s.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 = ""; для (var i в заголовках) { сообщение + = "" + заголовки [i] + " : "+ datarow [i] +" \ n \ n "; //Logger.log(message); } MailApp.sendEmail (электронная почта, «Отчет», сообщение); } – Tai

ответ

0

Вы можете проверить, если заголовки [я] является пустым, замените:

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

Смежные вопросы