Google Forms отличный инструмент – легко создать, простой в использовании и т. Д. Я был недавно в встрече, разговаривая с пользователями о платформе Google Cloud, и кто-то сказал, что хотелось, что они могут подключить форму Google до функции облака Google.
Мы думали на секунду, я думал: «Это должно быть возможно». Хотя обычно нет много прямой совместимости между G Suite и Google Cloud, я знал, что вы можете написать триггер сценария приложений для большинства документов Google, что позволит вам сделать HTTP-запросы, и что облачные функции могут принимать произвольные HTTP-запросы в качестве событий Так что нет никаких причин это не должно работать.
И на самом деле, это полностью работает!
Написание функции вашего облака
Там действительно ничего особенного в области облачной функции, вы создадите для этого: это как и любая другая облачная функция, которая принимает HTTP-запрос. Предположим, мы собираемся пропустить JSON обратно в качестве полезной нагрузки:
Функция будет выглядеть что-то подобное:
def form_trigger(request): payload = request.get_json(silent=True) print(f"Payload was: {payload}") return "OK"
Это получит JSON из Пост
Запрос, распечатайте его в наши журналы и просто верните «ОК». Очевидно, что вы можете сделать, то все, что вы хотите с полезной нагрузкой.
Развертывание этого функции с Функции GCloud Развертывают form_trigger --trigger-http --runtime python37
и перейти к следующему шагу.
Создание вашей Google Form
Форма Google, которую вы создаете, просто будет похоже на любую другую форму: вы можете иметь многоупомянутые вопросы, вопросы с несколькими вариантами выбора, вопросы свободных форм и т. Д.
Создание сценария для вашей формы
Вот где мы можем начать соединять точки. Во-первых, буквально выберите три точки в меню, когда вы редактируете свою форму:
Из этого меню выберите «Редактор сценария» Чтобы попасть в редактор скрипта приложений для этой формы. Это должно дать вам файл с именем Code.gs
с пустой функцией, как так:
function myFunction() { }
Мы собираемся обновить это, чтобы быть что-то вроде следующего:
// Replace with the URL to your deployed Cloud Function var url = "" // This function will be called when the form is submitted function onSubmit(event) { // The event is a FormResponse object: // https://developers.google.com/apps-script/reference/forms/form-response var formResponse = event.response; // Gets all ItemResponses contained in the form response // https://developers.google.com/apps-script/reference/forms/form-response#getItemResponses() var itemResponses = formResponse.getItemResponses(); // Gets the actual response strings from the array of ItemResponses var responses = itemResponses.map(function getResponse(e) { return e.getResponse(); }); // Post the payload as JSON to our Cloud Function UrlFetchApp.fetch( url, { "method": "post", "payload": JSON.stringify({ "responses": responses }) }; ); }
Обязательно обновите URL
Переменная с полным URL к вашим развернутым функциям облака.
Добавление триггера
Теперь, в редакторе скрипта, нажмите на “Редактировать” > «Триггеры текущего проекта» Отказ Это предложит вам дать вашему проекту имя, а затем ответить на HUB Suite Developer, и покажу вам все триггеры для вашего проекта (там не должно быть).
В правом нижнем углу выберите «+ добавить триггер», чтобы добавить новый триггер:
Диалог должен по умолчанию для OnsUbmit
Функция, которую вы объявили для своей формы, в противном случае выберите ее.
Вы также должны быть уверены, что измените поле «Выбрать тип события» из «на открытии» на «по форме».
Это создаст всплывающее окно, позволяющее сценарию приложений просмотреть и изменять вашу форму.
Наконец, сохраните свой триггер, и он должен появиться в списке триггеров.
Вывод
На данный момент ваша форма полностью подключена к облачным функциям! Вы можете представить некоторые тестовые ответы, и вы должны увидеть ответы, появляющиеся в журналах для вашей функции.
Отсюда вы можете подключить функцию к другим службам или делать все условное основание на основе ответов, и вам не нужно писать сценарий дополнительных приложений, чтобы это произошло.
Оригинал: “https://dev.to/googlecloud/hitting-a-cloud-function-when-you-submit-a-google-form-3hkn”