Проблема заключается в следующем: я не могу найти способ вернуть значение для «Курса», потому что каждое представление формы генерирует новая строка, где название курса распространяется по столбцам E в M (столбец с 4 по 12).Как вернуть значение в единственном непустом столбце в диапазоне для функции sendEmail в сценариях приложений Google
В каждой строке есть только одно имя «Курс» в одном из столбцов от E до M (например, только в F), а все остальные столбцы пусты. (Пользователи могут выбрать только один курс, а все остальные столбцы будут пустыми. Я должен классифицировать курсы в 9 столбцов из-за разрывов страниц, чтобы разделить количество опций, из которых пользователи выбирают курс.) Как сделать Я возвращаю значение единственной непустой ячейки от E до M, которая будет введена в электронном письме?
Мне было рекомендовано вставить всю функцию findCourse внутри функции sendEmail перед любым другим кодом. Я так и сделал, но я до сих пор получал отказ уведомление из сценариев Google App: TypeError: Cannot read property "values" from undefined. (line 14, file "Code")
(со ссылкой на значение вара = e.values [I])
Полный код ниже:
function sendEmail(e) {
function findCourse (e){
var courseToTake;
//loop through values
for (var i = 4; i <=12; i ++){
//pull value into variable
var value = e.values[i];
if (value != undefined){
//if we find an actual string value, set the course to take variable
courseToTake = value;
}
}
return courseToTake;
}
var Name = e.namedValues["Full name as appear in NRIC"];
var Course = findCourse();
var Start = e.values[14];
var End = e.values[15];
var StartTime = e.values[24];
var EndTime = e.values[25];
var Details = e.values[13];
var Cost = e.values[17];
var Email = e.values[18];
var ROname = e.values[19];
var ROemail = e.values[20];
var Location = e.values[23];
var subject = "Training Approval Request for " + Course;
var message = "<p >" + "Dear " + ROname + "<p />"
+ Name + " seeks your approval to attend the " + Course + ". The details are as follow:"
+ "<p >" + "<b>Date:</b> " + Start + " - " + End + " <br />"
+ "<b>Time:</b> " + StartTime + " - " + EndTime + " <br />"
+ "<b>Location:</b> " + Location + " <br />"
+ "<b>Course objectives and benefits:</b> " + Details + " <br />"
+ "<b>Course fees:</b> " + "$" + Cost + " <br />" + "<p />"
+ "Please reply directly to this email for your approval or if you have any questions/comments. Thank you. "
MailApp.sendEmail(ROemail, Email, subject, message);
}
После перестановки findCourse как его собственную функцию: извините, если я сделал какие-либо ошибки здесь, но я постараюсь изо всех сил следовать всем предложениям. Если я добавил в Logger.log (е) правильно, обе функции, как представляется, не определено
function sendEmail(e) {
Logger.log(e);
var Name = e.values[2];
var Course = findCourse();
var Start = e.values[14];
var End = e.values[15];
var StartTime = e.values[24];
var EndTime = e.values[25];
var Details = e.values[13];
var Cost = e.values[17];
var Email = e.values[18];
var ROname = e.values[19];
var ROemail = e.values[20];
var Location = e.values[23];
var subject = "Training Approval Request for " + Course;
var message = "<p >" + "Dear " + ROname + "<p />"
+ Name + " seeks your approval to attend the " + Course + ". The details are as follow:"
+ "<p >" + "<b>Date:</b> " + Start + " - " + End + " <br />"
+ "<b>Time:</b> " + StartTime + " - " + EndTime + " <br />"
+ "<b>Location:</b> " + Location + " <br />"
+ "<b>Course objectives and benefits:</b> " + Details + " <br />"
+ "<b>Course fees:</b> " + "$" + Cost + " <br />" + "<p />"
+ "Please reply directly to this email for your approval or if you have any questions/comments. Thank you. "
MailApp.sendEmail(ROemail, Email, subject, message);
}
function findCourse (e){
var courseToTake;
//loop through values
for (var i = 4; i <=12; i ++){
//pull value into variable
var value = e.values[i];
if (value != undefined){
//if we find an actual string value, set the course to take variable
courseToTake = value;
}
}
return courseToTake;
var courseToTake = findCourse(e);
Logger.log(e);
}
Я действительно глубоко признателен за любую помощь или альтернативные решения здесь.
Спасибо!
'е', скорее всего, не определено, так как нет ни одного аргумента передается в '' функции findCourse(). Что вызывает эту функцию, можете ли вы опубликовать остальную часть кода? –
Это полный код: Функция sendEmail (e) { Функция findCourse (e) { var courseToTake; // цикл по значениям для (вара я = 4; г <= 12; я ++) {// нагрузочного значения в переменную значение вара = e.values [I]; если (значение = не определено) { // если мы находим фактическое значение строки, установите курс взять переменную courseToTake = значение; } } return courseToTake; } – Kelly
Можете ли вы разместить этот код в своем посте, отформатирован? Боль в копировании/вставке неформатированного кода, особенно когда он содержит комментарии. –