У вас этот код никогда не заработает нормально. Почитайте комментарии на приведенном вами ресурсе.
Главная ошибка - это ссылка на активную Таблицу
SpreadsheetApp.getActiveSpreadsheet();
В триггере
OnFormSubmit
не может быть активной Таблицы, потому что никакой пользователь ее не открыл. А если даже и открыл, то он может не быть регистратором триггера или его инициатором.
Обработка ошибок
Google Apps Script (речь о данном моменте времени развития языка) не имеет развитых методов отладки. Поэтому обвяжите основной вызов:
/**
* В Таблице должен быть лист "Лог".
* Чтобы лист существовал всегда
* https://github.com/oshliaer/google-apps-script-snippets#get-a-sheet-by-name
**/
function handler(e) {
try {
sendFormByEmail(getNewEmailMessage(e));
} catch(err) {
e.source.getSheetByName('Лог').appendRow([new Date(), err.message, err.stack]);
}
}
Отлично, теперь все, что упало в рантайме, будет вам известно.
Текущая Таблица/Лист
Я приываю не только автора топика, но вообще всех: "Пожалуйста, не трогайте ActiveSpreadsheet, ActiveSheet и ActiveRange, т.к. это не VBA. Это #ВАЩЕ_НАФИГ_ДРУГАЯ_ВСЕЛЕННАЯ!". Обратите внимание на код выше
e.source.getSheetByName()
. Это все, что надо.
А вот пример комутатора:
/**
* Определение языка на основе ответа
**/
function getNewEmailMessage(e) {
var sheet = e.range.getSheet();
var lang = 'EN';
switch(sheet.getName()){
case 'RU':
return 'Ответ на русском';
break;
case 'EN':
return 'Ответ на нерусском';
break;
}
return 'Ответ на русском';
}
Осталось добавить аргументов и переписать
sendFormByEmail
согласно принимаемым параметрам.
Триггер на несколько Форм
Вместо заключения
Только качественный и проверенный контент