Google Forms при отправке

Как сослаться на кнопку «Отправить» по умолчанию, чтобы связать триггер «onsubmit» с другим действием? Спасибо.

Например, с onsubmit,

Logger.log('do something');

person user2012403    schedule 28.03.2013    source источник
comment
Можете уточнить свой вопрос. Это недостаточно ясно. Вы хотите запустить функцию, когда кто-то отправляет форму? Если это так, вы можете вызвать функцию как onSubmit()   -  person Srik    schedule 28.03.2013


Ответы (6)


Один не делает. Служба форм не допускает никакого программного управления продуктом. Существует открытая проблема в Трекер проблем для этой общей темы. Пометьте его, чтобы «голосовать» и получать обновления.

Однако вы не заблудились. В электронную таблицу, получающую ваши ответы из формы, вы можете добавить сценарий с устанавливаемым триггером для запуска «При отправке формы». Оттуда вы можете делать многое с отправленными данными, включая ведение журнала по своему желанию... но ничего с самой формой.

Триггеры

Эти ссылки объясняют триггеры и события.

person Mogsdad    schedule 28.03.2013
comment
Обновление — теперь есть служба форм, которая дает программный контроль над многими элементами форм. - person Mogsdad; 27.05.2013
comment
Указанная проблема исправлена. - person Rubén; 02.11.2017

Вместо добавления в электронную таблицу сценария, получающего ответы от формы (как в ответе Могсдада), я добавил сценарий, который запускается кнопкой отправки формы.

Шаг 1. сначала создайте форму Google.

образец формы 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

Триггеры приложений Google

Шаг 8. Затем в меню редактора форм нажмите Инструменты->Диспетчер скриптов и убедитесь, что ваш скрипт выбран.

Диспетчер скриптов

Шаг 9. попробуйте форму. Вы должны получить электронное письмо после нажатия кнопки отправки формы.

форма Google Apps live

person JohnB    schedule 13.08.2014
comment
Предположение ** Я добавил скрипт, который запускается кнопкой отправки формы. ** не соответствует действительности, в вашем ответе используется тот же устанавливаемый триггер, что и в ответе Могсдада... вы просто вставляете его в контейнер формы, но он ничего не меняет вообще. В то время, когда был опубликован первый ответ, нельзя было вставлять скрипты в формы. - person Serge insas; 14.08.2014

Это старый ответ.

В настоящее время (январь 2014 г.) существует два способа onSubmit. Один из них - просто создать функцию onSubmit(), которая предположительно (у меня она не работает...) разрешает ограниченный набор действий только с разрешения текущего отправляющего пользователя. Например, вы не можете получить доступ к его отправленному электронному письму или изменить базовую форму для следующей отправки.

Затем есть триггер для отправки, который вы можете добавить и прикрепить к любой функции и делать все, что хотите, с вашими собственными разрешениями. выглядит так же, как снимок экрана с добавлением триггера в ответе выше, за исключением того, что его первый столбец показывает методы в сценарии форм, следующий столбец гласит: From-Form, а в третьем столбце вы выбираете: On Submit.

Обычно ваш метод получает событие e , e.values ​​которого совпадают со значениями, сохраненными в электронной таблице. Так

функция formSubmitted(e){ ...

person pashute    schedule 30.01.2014

Кажется, есть два приложения, которые запускают код: (1) форма и (2) электронная таблица, связанная с ответами формы.

(1) Программно из формы мало что можно сделать, поскольку событие не отправляется функциям, как отмечали Могсдад и Джон Б. выше. Например, можно отправить электронное письмо «При отправке формы» или «При открытии», но без объекта события нельзя даже записать число или строки или что-либо о документе или представлении.

(2) Однако, если электронная таблица связана с ответами формы, то в электронной таблице можно установить триггер, где можно получить доступ к событию и, следовательно, к строке, столбцу и другим данным.

Из связанного ответа Google Spreadsheet:

  • Шаг 1: Инструменты > Редактор скриптов
  • Шаг 2: напишите код, например:

Код.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"});
}
  • Step 3: Run > Run function > onSpreadsheetSubmit (or |> icon)
    • The event likely doesn't have an actual row because the test is not associated with a real submit.
  • Шаг 4: Вам будет предложено выбрать пользователя и пройти аутентификацию
  • Шаг 5: Редактировать > Триггеры текущего проекта (или значок в виде часов)
  • Шаг 6. Добавьте новый триггер
  • Шаг 7: onSpreadsheetSubmit | Из электронной таблицы | При отправке формы
  • Шаг 8: Аутентификация и сохранение (или наоборот)
  • Шаг 9: Протестируйте, ожидая (или выполняя) реальную отправку формы
  • Шаг 10. Проверьте свою электронную почту

Для получения дополнительной информации: https://developers.google.com/apps-script/guides/triggers/events#google_sheets_events

person alex    schedule 02.11.2017
comment
Триггер onFormSubmit из формы также имеет объект события: developers.google. .com/apps-script/guides/triggers/ - person Max Makhrov; 27.10.2020

Вышеприведенный HOWTO от JohnB превосходен. Обновление (ноябрь 2017 г.):

  • Шаг 2: «Редактор скриптов...» находится в вертикальном меню «...» гамбургера в правом верхнем углу формы.
  • Шаг 6: «Триггеры проекта» находятся в (значке в виде часов) (второй значок, показанный выше).
  • Шаг 7: Нажмите «Добавить новый триггер», игнорируйте предупреждение «no myFunctions».
  • Шаг 8: кажется, не существует, может быть не нужен, у меня работает без.

Многие из вышеперечисленных шагов требуют подтверждения/принятия владельцем формы.

person alex    schedule 02.11.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;   
}

Установите эту функцию в качестве устанавливаемого триггера.

Ссылка:

person Max Makhrov    schedule 27.10.2020