Как сослаться на кнопку «Отправить» по умолчанию, чтобы связать триггер «onsubmit» с другим действием? Спасибо.
Например, с onsubmit,
Logger.log('do something');
Как сослаться на кнопку «Отправить» по умолчанию, чтобы связать триггер «onsubmit» с другим действием? Спасибо.
Например, с onsubmit,
Logger.log('do something');
Один не делает. Служба форм не допускает никакого программного управления продуктом. Существует открытая проблема в Трекер проблем для этой общей темы. Пометьте его, чтобы «голосовать» и получать обновления.
Однако вы не заблудились. В электронную таблицу, получающую ваши ответы из формы, вы можете добавить сценарий с устанавливаемым триггером для запуска «При отправке формы». Оттуда вы можете делать многое с отправленными данными, включая ведение журнала по своему желанию... но ничего с самой формой.
Эти ссылки объясняют триггеры и события.
Вместо добавления в электронную таблицу сценария, получающего ответы от формы (как в ответе Могсдада), я добавил сценарий, который запускается кнопкой отправки формы.
Шаг 1. сначала создайте форму Google.
Шаг 2. Затем в меню выберите Инструменты->Редактор скриптов.
Шаг 3. дайте вашей функции имя, например onSubmit()
.
Шаг 4. Напишите код для отправки такого электронного письма, а затем протестируйте его, нажав кнопку "Выполнить".
function onSubmit() {
MailApp.sendEmail("[email protected],[email protected]",
"Subject",
"A new application has been submitted.\n\n" +
"Here is the link to all Applications:\n" +
"https://docs.google.com/spreadsheets/x/1-fdasjhFAKEfdaahfkhsa/",
{name:"From Name"});
}
Шаг 5. в меню редактора скриптов нажмите Выполнить или нажмите кнопку Воспроизвести на панели инструментов, чтобы протестировать свой код (например, убедитесь, что вы получить письмо)
Шаг 6. в меню редактора сценариев выберите Ресурсы-> Триггеры текущего проекта.
Шаг 7: выберите настройки События From form
On form submit
Шаг 8. Затем в меню редактора форм нажмите Инструменты->Диспетчер скриптов и убедитесь, что ваш скрипт выбран.
Шаг 9. попробуйте форму. Вы должны получить электронное письмо после нажатия кнопки отправки формы.
Это старый ответ.
В настоящее время (январь 2014 г.) существует два способа onSubmit. Один из них - просто создать функцию onSubmit(), которая предположительно (у меня она не работает...) разрешает ограниченный набор действий только с разрешения текущего отправляющего пользователя. Например, вы не можете получить доступ к его отправленному электронному письму или изменить базовую форму для следующей отправки.
Затем есть триггер для отправки, который вы можете добавить и прикрепить к любой функции и делать все, что хотите, с вашими собственными разрешениями. выглядит так же, как снимок экрана с добавлением триггера в ответе выше, за исключением того, что его первый столбец показывает методы в сценарии форм, следующий столбец гласит: From-Form, а в третьем столбце вы выбираете: On Submit.
Обычно ваш метод получает событие e , e.values которого совпадают со значениями, сохраненными в электронной таблице. Так
функция formSubmitted(e){ ...
Кажется, есть два приложения, которые запускают код: (1) форма и (2) электронная таблица, связанная с ответами формы.
(1) Программно из формы мало что можно сделать, поскольку событие не отправляется функциям, как отмечали Могсдад и Джон Б. выше. Например, можно отправить электронное письмо «При отправке формы» или «При открытии», но без объекта события нельзя даже записать число или строки или что-либо о документе или представлении.
(2) Однако, если электронная таблица связана с ответами формы, то в электронной таблице можно установить триггер, где можно получить доступ к событию и, следовательно, к строке, столбцу и другим данным.
Из связанного ответа Google Spreadsheet:
Код.gs:
function onSpreadsheetSubmit(e) {
var row = e.range.getRow();
MailApp.sendEmail("[email protected]",
"Your subject, rows: "+ row,
"A new application has been submitted on row: "+
row,
{name:"From your friendly spreadsheet"});
}
Для получения дополнительной информации: https://developers.google.com/apps-script/guides/triggers/events#google_sheets_events
Вышеприведенный HOWTO от JohnB превосходен. Обновление (ноябрь 2017 г.):
Многие из вышеперечисленных шагов требуют подтверждения/принятия владельцем формы.
Я бы рекомендовал использовать триггер из Forms. В форме откройте редактор скриптов и вставьте код:
function onFormSubmit(e) {
// for tests
if (!e) {
// test object
var form = FormApp.getActiveForm()
var responses = form.getResponses();
e = {"authMode":"FULL",
"response": responses[responses.length - 1], // last response
"source": form,
"triggerUid":"5125265"};
};
// do your job here
try {
// paste useful code here...
//
//
}
catch (err) {
MailApp.sendEmail("[email protected]",
"Error in the app",
"New error, please check.\n\n" +
"Here is the event object:\n" +
e + "\n" +
JSON.stringify(e) + "\n\n" +
"Here's an error:\n" + err,
{name:"From Name"});
throw err;
}
return 0;
}
Установите эту функцию в качестве устанавливаемого триггера.
Ссылка: