Вы сделать несколько замешательства о переменных. field
- это целое число, которое вы используете в качестве индекса, поэтому условие, подобное if (field == 'Email')
, никогда не может быть правдой.
Вы должны получить значения ключей из объекта ответа формы и использовать его для выбора значений.
Другой ответ показывает возможный способ достижения этого, читая электронную таблицу, но есть более простой и прямой способ сделать это непосредственно из объекта.
for(var k in e.namedValues){ keys.push(k) };
Logger.log("total " + keys.length + " keys: " + keys);
Тогда вы можете использовать это для проверки каждого элемента ответа. Возвращаемые значения из текстовых вопросов являются строками, поэтому вам не нужно использовать toString()
.
Полный код приведен ниже:
function formSubmit(e){
var keys = [];
var email = '';
var subject = '';
var message = '';
var myemail = Session.getActiveUser().getEmail();
for(var k in e.namedValues){
keys.push(k);
}
Logger.log("total " + keys.length + " keys: " + keys);
for(var field in keys) {
message += field + ' :: '+ e.namedValues[keys[field]] + "\n\n";
if (keys[field] == 'Subject') {
subject += e.namedValues[keys[field]];
}
if (keys[field] == 'Email') {
email = e.namedValues[keys[field]];
}
}
MailApp.sendEmail(email, subject, message, {replyTo:myemail});
}
Кстати, вам не нужно жёстко свой адрес электронной почты, так как GS имеет метод для него, триггер onFormSubmit
является устанавливаемая триггер он работает, как вы и вы можете использовать Session.getActiveUser().getEmail()
.
Вы подтвердили, что 'email' действительно содержит адрес электронной почты? – JSuar
@JSuar Да, поле электронной почты содержит электронное письмо. –
Вы пытались использовать явные значения параметров, чтобы убедиться, что функция работает на вас? Пример: 'MailApp.sendEmail ('[email protected] ',' Test Email ',' Это тестовое письмо. ', {ReplyTo:' [email protected] '})' – JSuar