Упрощаем работу с Google-формами: Apps Script и выпадающее меню
Aug 23, 2020 · 5 min read
Я работаю в отделе физической безопасности одной технической компании. Для улучшения рабочих процессов я пользуюсь JavaScript в G Suite. Сам я не люблю монотонную работу, так что для меня писать скрипты, чтобы избежать повторяющихся муторных задач, — как спасательная капсула. А теперь покажу вам примеры.
За прошлый год наши операционные задачи по сотрудникам выросли практически втрое и соответственно увеличился оборот. Поэтому распорядок дежурств постоянно меняется. Почему так важно, чтобы список был обновлен? Потому что он используется в выпадающем меню более, чем 6-ти форм Google.
После создания н о вых форм ко мне в течение дня или недели ходят сотрудники и просят добавить или удалить чьи-то имена из выпадающего меню в нескольких формах. Это те самые монотонные задачи, которые я не хочу выполнять каждый раз, а делиться доступом к редактированию этих форм просто опасно из-за возможности пользовательских ошибок.
Чтобы решить, как быть в этой ситуации, я взял второй инструмент из своего любимого набора — Apps Script. Я написал скрипт, который берет список имен из главной таблицы, и когда данные в ней меняются, автоматически обновляются выпадающие меню во всех Google формах. Вот так я решил для себя задачу с оптимизацией монотонной работы.
В итоге: все, что нужно сделать моим коллегам в отделе, — это обновить один список, чтобы обновились все связанные выпадающие меню в формах.
А теперь подробно разберем весь процесс.
Первое и самое важное, про что я хочу вам рассказать, — мой любимейший инструмент, который управляет буквально всем, — поиск Google! Я открыл новое окошко и запросил “Обновить выпадающие списки при помощи Google Apps Script”. Ну или что-то подобное. Конечно же я нашел не один ресурс с подсказками.
Никто еще не добавлял скрипты для моей таблицы, так что я увидел чистый лист.
Google Apps Script:
дрессированные коды
Пользовательское меню
Функция onOpen является простым триггером. Выполняется при открытии документа.
Авторизация пользователя для запуска этой функции не требуется, поэтому возможности её ограничены лишь несколькими действиями.
В частности, для onOpen доступно создание пользовательского меню документа, таблицы, слайдов и форм в контейнерном скрипте.
Функция addItem добавляет элемент меню.
Автоматическое письмо после заполнения формы
Использование html-разметки в письме не обязательно, это всего лишь дополнительный атрибут.
Тескт письма разделен на блоки, помещенные в кавычки и соединенные оператором плюс (‘текст ‘ + ‘текст’). Это сделано для удобства чтения кода, чтобы обеспечить возможность переноса строк.
Так тоже правильно (‘текст текст’), но если перенести часть текста на следующую строку, не закрывая кавычки и не добавляя оператор плюс (+), то код не понимает, что продолжается текст и воспринимает перенесенную часть текста, как новую команду.
Поэтому перенос текстовых строк в коде выглядит так:
«текст текст текст » +
«текст текст»
Альтернативный равнозначный вариант кода выглядит так:
«текст текст текст текст текст»
Причем, данный перенос строки (в первом варианте), повторюсь, нужен только для удобства чтения кода, но в самом письме переноса строки не будет.
Для того, чтобы добавить в письмо перенос строки, нужно в конце строки добавить тег
. Это мы уже плавно перешли к тегам html-разметки.
Экспорт Google Forms + загрузка Google Script через REST API (Python)
У нас было две гугл-формы, 75 вопросов в каждой, 5 бизнес-пользователей, которые активно правили эти формы, а еще гугл-скрипт, экспортирующий форму в JSON. Не то что бы его было сложно каждый раз запускать руками, но раз начал автоматизировать свою работу, то иди в этом увлечении до конца.
В официальной документации сам черт ногу сломит, поэтому под катом мы подробно рассмотрим удаленную загрузку и запуск Google Apps Script через REST API, используя Python.
Введение
У нас в «Доктор рядом» разрабатывается платформа для чат-ботов, в которой для описания сценариев используются гугл-формы. Соответственно, хочется из форм по нажатию кнопки получать JSON, содержащий ноды (пункты формы) и метаданные к ним (переходы между нодами, типы нод, их название). Казалось бы, желание простое, но гугл не поддерживает данный функционал и приходится собирать этот «экспортер» своими руками. Рассмотрим по шагам процесс его создания.
ШАГ 1. Google Apps Script
Google предусмотрел возможность взаимодействия со своими сервисами (Sheets, Docs, Forms) через Google Apps Script — скрипты, написанные на языке google script (.gs). Данная статья не предусматривает разбора языка google script, поэтому приведу пример готового скрипта, создающего JSON из имеющейся гугл-формы. За основу был взят с гитхаба код пользователя Steven Schmatz, за что выражаю ему свою благодарность.
Что происходит в коде:
ШАГ 2. Тестирование скрипта
В данный момент работоспособность скрипта можно проверить следующим образом:
Внимание: Для удобства понимания происходящего, ниже я буду ссылаться только на две страницы, поэтому рекомендуется открыть их в соседних вкладках:
ШАГ 3. Настройка Google Cloud Platform
Заходим в Google Cloud Platform (страница 2), создаем новый проект. Необходимо создать новый проект, ибо по умолчанию статус проекта — Default, а для наших целей требуется Standart. Подробнее можно почитать тут (пункт 3).
Возвращаемся на страницу 2, переходим во вкладку «API и сервисы», затем «Окно запроса доступа OAuth». Ставим User Type «Внешний».
В появившемся окне заполняем «Название приложения».
Открываем главную страницу в Google Cloud Platform. Из блока «Информация о проекте» копируем номер проекта.
ШАГ 4. Python REST API
Пришло время автоматизировать работу скрипта с помощью REST API. В качестве языка был использован Python.
Логин в Apps Script API
В таком случае функция логина будет выглядеть следующим образом:
Данный блок кода — стандартная процедура для начала работы с Google App Script.
Мы используем аутентификационный токен и, осуществляя login, либо создаем новый токен, либо используем уже существующий.
Для удобства был создан конфигурационный JSON файл, имеющий следующий вид:
Важно: токен создается для аутентификации с конкретным скопом разрешений. Иными словами, при изменении скопа разрешений, следует удалить токен и при логине создать новый.
Удаленное обновление кода скрипта
Речь о манифесте зашла неспроста: для удаленного обновления скрипта требуется загрузка кода обоих файлов (*.gs) и манифеста (appscript.json).
Теперь скопируем автоматически сгенерированный манифест и немного модифицируем его под наши цели. Документация достаточно исчерпывающе описывает структуру манифест файла, поэтому останавливаться на этом моменте я не буду. Для работы скрипта необходимо добавить в дефолтный манифест секцию «executionApi», которая требуется для удаленного запуска скрипта через API. В данной секции указываем круг лиц, имеющих возможность запускать его. Я разрешил запуск для всех, кто прошел авторизацию, что соответствует идентификатору «ANYONE»:
Тело запроса на обновление должно содержать в себе массив файлов со следующей структурой:
У объекта service, полученного в результате логина, получаем поле projects() и вызываем метод updateContent(), после чего у полученного объекта HttpRequest вызываем метод execute():
Однако, на данный момент запуск кода приведет к ошибке:
Как видим, не хватает разрешений в аутентификационном скопе, который мы указали ранее. Обратимся к официальной документации по API, а именно к методу updateContent, который мы использовали для удаленного обновления скрипта. Документация гласит, что использование этого метода требует включения разрешения доступа к script.projects:
Добавим его в нашу конфигурационный файл в секцию SCOPES. Как я уже писал выше, при изменении скопа, необходимо удалять автоматически создающийся токен.
Отлично! На данный момент мы научились удаленно обновлять гугл скрипт. Осталось его запустить и получить результат выполнения.
Запуск скрипта
Запрос на запуск скрипта содержит scriptID и body со следующей структурой:
Так как наше приложение не под Android и мы являемся владельцами скрипта, то в итоге body будет выглядеть так:
Запустим скрипт и запишем результат выполнения в переменную resp:
Сохраним resp в файл с удобным JSON форматированием:
Внимание. В силу того, что script.run() запрос ждет результат через сокет, то при превышении таймаута временем выполнения, произойдет ошибка следующего типа:
Для избежания такого поведения, рекомендую в начале программы установить лимит на открытое время сокета, заведомо достаточное для того чтобы он дождался окончания выполнения скрипта. В моем случае 120 секунд достаточно:
Вуаля! Удобный пайплайн для удаленного обновления и запуска гугл скриптов готов. Полный код, приспособленный к запуску из терминала приведен в моем гитхабе.
Пишем скрипты для автоматизации работы с приложениями Google
Содержание статьи
Google Apps Script — это язык для автоматизации работы с онлайн-приложениями, появившийся в 2009 году. Его основа — классический JavaScript, обогащенный расширениями для работы с сервисами Google. После прочтения этой статьи ты овладеешь основами использования этого языка, выучишь пару приемов манипуляции с почтой и документами, а также получишь представление о необозримых возможностях Google Apps Script.
Основы использования
Хакер #187. Обходим Blizzard Warden
Теперь в нашем меню есть пункт под названием ExampleFunc, при клике на который открывается однострочное подменю «Моя единственная функция».
Декларированные функции можно использовать в формулах, которые вводятся внутрь ячеек электронных таблиц (см. рис. 3). Теперь перейдем к более практически полезным примерам.


WARNING
Работа с Google Docs
Когда встает задача автоматизации работы с офисными документами, первым делом на ум приходит VBA, одно упоминание которого оказывает на многих тотальное антиэкстатическое воздействие, вызывая болезненные воспоминания из школьного и университетского прошлого. Google Script однозначно удобнее и доступнее для понимания. Особенно для веб-разработчиков, ведь это же родной, привычный и любимый JS! Разберем пару примеров скриптов для Google Docs. Приведенный код заполняет левую верхнюю ячейку первого листа активной таблицы:
А этот код создает копию текстового документа и кладет его в определенное место:
А вот так можно провести замену строк в текстовом документе:
Следующий пример кода подсвечивает определенные слова в тексте:

Если пишешь скрипт, включающий в себя функции поиска/замены текста, помни о том, что GS поддерживает регулярные выражения.
Работа с почтой
Письмо отправляется одной короткой строкой: MailApp.sendEmail(«irairache@gmail.com», «тема письма», «текст письма») Если добавить к ней еще немного кода, то можно организовать рассылку по списку адресов из электронной таблицы (исходник ищи в приложении):
Помимо рассылок, с помощью GS можно производить автоматизированную обработку содержимого почтового ящика. Пример — удаление всех писем от адресата, на которого ты обиделся:
WARNING
Имей в виду, что Gmail не только защищает от входящего спама, но и ограничивает рассылку исходящего. Больше 500 писем за сутки с помощью Google Apps Script не выйдет.
Работа с Google Translate
С помощью Google Apps Script можно переводить текстовые строки с одного языка на другой. Пример:
Коды для языков можно посмотреть в адресной строке сервиса Google Translate.
Работа с Google Drive
Google Apps Script может работать с файлами пользователя, размещенными на Google Drive. Этот скрипт выводит в консоль имена всех файлов пользователя:
К файлам можно применять несколько десятков различных методов. Вот некоторые из них:
Работа с Google Contacts
Адресная книга также может быть подвергнута автоматизированной обработке. Приведенный ниже код копирует все контакты из группы «Редакция» в лист Google Spread Sheet:
Работа с Google Tasks
С помощью Google Apps Scripts можно работать с сервисом Google Task — создавать новые задачи и парсить уже имеющиеся.
Этот код создает новое дело в списке:
А таким образом можно вывести список нумерованных задач в консоль:
Задачи можно перемещать из одного списка в другой с помощью метода move, дополнять с помощью метода update и удалять с помощью метода delete.
Всего есть несколько десятков методов для работы с задачами. Полный их список доступен вGoogle Apps Script References для Google Tasks.
Работа с календарем
Создавать события в календаре тоже можно автоматически (и так же, как в случае с рассылкой, формировать информацию о них из строк таблицы). Код для создания события:
Формы обмена скриптами
Есть два основных способа поделиться своим скриптом с другим человеком (без учета непосредственного обмена исходным кодом) — ссылка и гаджет. В первом случае все просто: пользователь получает ссылку на программу, переходит по ней, и скрипт немедленно начинает выполняться (при условии, что человек авторизирован в своем Google-аккаунте).
События
Можно настроить скрипт так, чтобы он выполнялся после определенного события. К примеру, после открытия/редактирования электронной таблицы или отправки данных формы. Подробности о работе с Events
Работа с базами данных
Для этого существует сервис для работы с базами данных Google Cloud SQL. По сути — классический MySQL в облаке. Может взаимодействовать с Google Apps Script по стандарту Java Database Connectivity. Вот пример кода, который производит чтение записей из таблицы:
Стоимость использования сервиса — 88 долларов в год за 10 Гб свободного места. С другими базами данных Google Apps Script, к сожалению, работать не может. Если ты запланировал написать скрипт, который должен взаимодействовать с данными, не стоит сразу расстраиваться или истощать свой бюджет пожертвованиями на закупку квадроциклов для жителей Кремниевой долины. Есть два способа выкрутиться из этой ситуации:
Приложения, с которыми может взаимодействовать Google Apps Script
Я думаю, что далеко не каждый из наших читателей успел опробовать все онлайн-сервисы Google. В целях расширения кругозора и стимуляции творческого воображения приведем краткий обзор возможностей приложений, работу которых можно автоматизировать с помощью Google Apps Script.
По старой доброй традиции, которой уже почти три месяца, мы выложили несколько исходничков на GitHub:
Advanced Google Services
У Google есть множество API для разработчиков, которые можно внедрять в программы, написанные на Google Apps Script. Для этого надо подключить в редакторе скриптов эту возможность (в меню Resources, далее Advanced Google services). После этого можно будет задействовать возможности следующих сервисов:
Инструкция по созданию опросов в Google Формах
Google Forms — это бесплатный инструмент для сбора информации с помощью опросов, форм обратной связи и тестирования. Разобраться в интерфейсе не составит никакого труда, а для создания формы нужен только аккаунт Google.
C помощью данного инструмента вы можете:
Сервис Google Forms обладает рядом преимуществ:
Начало работы с Google Forms
Чтобы создать гугл-форму, необходимо авторизоваться в аккаунте Google. Если такого нет, его можно создать по ссылке accounts.google.com.
Перейти к созданию гугл-форм можно несколькими способами.
Из адресной строки браузера
Самый простой способ начать создавать форму — прямо в приложении Google Forms. Перейдя по ссылке https://docs.google.com/forms, вы окажетесь на главной странице, где сможете выбрать один из шаблонов или создать свой пустой файл.
Чтобы автоматически создать новую пустую форму, впишите forms.new в адресную строку любого браузера и нажмите Enter.
Из почты Gmail и стартовой страницы Google
Нажмите на иконку «Приложения Google» и в появившемся меню выберите значок «Формы». В некоторых аккаунтах может не быть этого значка по умолчанию, в таком случае необходимо выбрать пункт «Диск».
Из Google Диска
Нажмите в левом углу на кнопку с плюсиком «Создать» и в раскрывающемся меню выберите нужный пункт.
Из сервисов офисного пакета Google
Ссылка на Google Forms есть в документах, таблицах и презентациях: нажмите Файл → Создать → Форма, чтобы создать новую пустую форму.
Если вы уже работаете с таблицей Google и вам необходимо создать форму, которая будет автоматически с ней связываться, просто нажмите Инструменты → Создать форму. Ответы формы будут сохраняться в этой таблице отдельным листом без дополнительных настроек.
Панель инструментов в Google Forms
Давайте создадим гугл-форму с нуля, используя пустой шаблон.
Интерфейс у сервиса простой, приятный и интуитивно понятный. В верхней панели находятся элементы, с помощью которых можно задать основные настройки:
1. Настройки темы
Сделайте индивидуальным дизайн для гугл-формы, выбрав цвет вашего корпоративного стиля или воспользовавшись предложенными шаблонами. В Google Forms есть возможность выбирать изображение для верхнего колонтитула, изменять цветовую схему и шрифт.
Обложка — это первое, на что обратит внимание респондент при открытии вашей формы. Вы можете добавить собственную тематическую фотографию или брендированное изображение: логотип компании, баннер с промоакцией, названием и датой проведения мероприятия. Также можно воспользоваться галереей изображений, где они удобно распределены по темам.
После того, как вы выберете изображение для верхнего колонтитула, Google Forms автоматически подберет под него гармоничную цветовую схему. При желании тему можно изменить, нажав на иконку с плюсиком:
Что касается шрифтов, то выбор их тут невелик, а также отсутствует возможность добавить кастомные шрифты. Вы можете сохранить свой индивидуальный стиль в письме, установив пользовательские шрифты в емейл-редакторе eSputnik.
2. Предпросмотр
Полезная функция, которая пригодится перед отправкой формы. Позволяет увидеть форму такой, какой ее увидят ваши респонденты. Воспользоваться предпросмотром, чтобы оценить форму визуально, проверить все ли правильно работает и заметить все недочеты, можно на любом этапе ее создания.
3. Настройки
Вкладка «Общие»
Если вы хотите собирать адреса электронной почты ваших респондентов, нажмите галочку «Собирать адреса электронной почты». При выборе этого пункта появится обязательное для заполнения поле «Адрес электронной почты» в начале формы. Пока пользователь не введет адрес email, ему будут недоступны для просмотра остальные разделы формы.
Также в этой вкладке можно задать, сможет ли респондент отправлять форму более одного раза. Эта функция поможет избежать искусственной накрутки показателей: если поставить галочку, пользователь должен будет авторизоваться в своем аккаунте Google и сможет ответить только один раз.
Здесь же можно настроить, могут ли респонденты изменять ответы после отправки формы и видеть другие ответы.
Вкладка «Презентация»
Добавляет некоторые визуальные штрихи вашему опросу: здесь вы можете вставить индикатор заполнения формы, выбрать функцию перемешивания вопросов, а также добавить текст, который будет показан респонденту после заполнения формы.
Вкладка «Тест»
Если вы создаете форму для тестирования, включите опцию «Тест» в этой вкладке. Это позволит назначать количество баллов за ответы и сделать оценивание автоматическим. Также здесь можно установить, что будет показано респонденту при прохождении теста:
4. Кнопка «Отправить»
Google Forms предлагает несколько удобных способов для отправки формы: в виде электронного письма, ссылки, как публикацию в Facebook и Twitter, а также в виде HTML-кода для вставки на сайт.
Ниже в этой статье мы расскажем подробнее, как вставить опрос в электронное письмо.
5. Дополнительные настройки
В этой вкладке вам доступны различные действия с формой: копирование, удаление, печать, создание шаблона для заполнения, настройка доступа и некоторых параметров по умолчанию для всех новых форм.
Пункты меню «Редактор скриптов» и «Дополнения» расширяют возможности использования гугл форм, помогая реализовать различные полезные функции:
Для опытных разработчиков вся необходимая информация о скриптах собрана в справочных материалах, а обычный пользователь найдет нужный ему инструмент в Дополнениях.
Конструктор форм
Приступим к созданию самого опроса. В Google Forms есть возможность не только создавать вопросы, а и вставлять изображения, видео и делить форму на разделы. Сделать это можно при помощи панели инструментов, которая находится справа от блока с вопросом:
Пункт меню «Импортировать вопросы» позволяет повторно использовать вопросы из ранее созданных форм, причем вы можете выбрать, какие именно вопросы перенести. Это удобно для тех, кто часто работает с Google Forms.
Добавить изображение можно прямо с устройства, с камеры, по ссылке, с Google Диска или через поиск Google. Видео встраиваются с YouTube: вы можете указать ссылку либо найти видео на данной платформе, не покидая своей формы.
Добавление разделов удобно использовать, если опрос получается слишком длинным или содержит вопросы, которые можно объединить в одну тему. Длинный опрос, разбитый на разделы, визуально воспринимается проще. Вы можете добавить название и краткое описание для каждого раздела, а также копировать разделы для создания похожих.
В конструкторе форм у каждого блока есть общие элементы, которые встречаются в любом вопросе:
Типы вопросов
Google Forms предлагает различные типы вопросов в зависимости от того, какие ответы вы желаете получить от вашей аудитории:
Для выбора типа ответа щелкните раскрывающееся меню рядом с полем вопроса:
Текст (строка)
Удобно использовать для коротких ответов в нескольких словах: узнать имя, возраст, адрес, емейл, получить ссылку на профиль в соцсетях и т.п.
Чтобы ответ был релевантным, и вместо ответа на числовой вопрос пользователь не вводил, например, случайные буквы, можно установить правила с проверкой ввода данных. Для этого щелкните пиктограмму с тремя точками в правом нижнем углу блока с вопросом и выберите опцию «Проверка ответов».
Текст (абзац)
Этот тип аналогичен предыдущему, но предполагает более подробный ответ из одного или нескольких абзацев. Подходит для случаев, когда пользователю нужно описать свое мнение или рассказать ситуацию.
Один из списка
Респондент может выбрать один из предлагаемых вариантов или вписать свой в текстовом поле. Этот тип ответа дает возможность перенаправить респондента в определенный раздел опроса в зависимости от выбранного им варианта. Для этого нужно нажать на значок «Ещё»
После этого станет доступен выбор возможных переходов в зависимости от ответа пользователя: он может быть перенаправлен в другой раздел формы либо после определенного ответа опрос будет завершен, а форма отправлена:
Для этого типа ответа также доступна опция «Перемешать ответы»: при каждом открытии формы варианты ответов будут меняться местами.
Если в настройках Google Формы вы отметили, что это тест, в блоке с этим типом вопроса вам будет доступна дополнительная настройка ответов:
Здесь есть возможность указать правильный вариант ответа, а также количество баллов за верный ответ и добавить пояснение: как для правильных ответов, так и для неправильных.
Несколько из списка
У респондента есть возможность выбрать несколько вариантов из предложенных, в том числе вариант «Другое» для короткого текстового ответа.
При тестировании для такого типа вопроса доступна функция «Проверка ответов». Здесь можно выбрать количество правильных вариантов и текст, который будет показан как сообщение об ошибке.
Раскрывающийся список
Как и «Один из списка», предполагает выбор одного из предложенных вариантов, но в данном случае они представлены в виде раскрывающегося меню. Такой вариант удобен, когда вариантов ответов слишком много: раскрывающееся меню смотрится более компактно.
Функции для этого варианта ответа аналогичны выбору одного из списка:
Загрузка файлов
Позволяет респонденту загружать в качестве ответа собственные файлы. Тип и максимальный размер файла вы можете задать в настройках.
При создании блока с таким типом ответа нужно учесть следующие особенности:
Технически возможно, чтобы файлы смогли загружать пользователи и без использования учетной записи, но в таком случае необходимо будет использовать дополнительные скрипты Google.
Шкала
Вариант, который отлично подходит для оценивания какого-либо показателя. Респонденту предлагается выбрать оценку в определенном числовом диапазоне. Вы можете установить метки от 0 до 1 для начала и от 2 до 10 для конца шкалы, а также задать подписи для начала и конца шкалы, например, в виде эмоджи.
Такую шкалу также удобно использовать для определения NPS — индекса лояльности потребителей. Чтобы выявить уровень удовлетворенности клиентов, им предлагается оценить компанию, товар или услугу по 10-балльной шкале. В зависимости от ответов, можно выделить условные группы покупателей и разработать стратегию взаимодействия с ними. Подробнее об индексе потребительской лояльности и о том, как работать с клиентами разных сегментов, можно прочитать у нас в блоге.
Сетка (множественный выбор)
У респондента есть возможность оценить различные параметры по предложенной шкале. При данном типе вопроса создается сетка, в которой можно выбрать один ответ для каждой строки. Дополнительные функции предлагают возможность ограничить ответы одним выбором для каждого столбца, требовать заполнение всех строк и перемешать строки.
Сетка флажков
Респондент оценивает разные параметры по нескольким критериям. Тип ответа аналогичен предыдущему, но при этом есть возможность выбрать один или несколько предложенных вариантов из строки.
По аналогии с типом «Сетка» (множественный выбор), есть функции для ограничения ответов одним выбором для каждого столбца и перемешиванием строк.
Респонденту предлагается выбрать дату из календаря. При необходимости можно включить выбор года или добавить время в настройках.
Время
Респондент может ввести значение времени в часах и минутах, либо указать продолжительность в часах, минутах, секундах. Выбрать нужный вариант можно в меню «Ещё» в правом нижнем углу. Этот тип ответа удобно использовать, например, при почасовом бронировании, уточнении времени встречи, доставки и т.д.
Создание и редактирование форм в конструкторе сделано удобно для пользователя: можно как продумать последовательность разделов и вопросов заранее, так и упорядочить их в процессе создания. Любой элемент формы — раздел, вопрос, изображение или видео — можно легко переместить, потянув за шесть точек вверху блока. Возможность копирования значительно упрощает добавление похожих разделов и вопросов в вашу форму, а отменить нежелательное действие можно привычными сочетаниями клавиш CMD+Z или Ctrl+Z.
Кроме этого, как и во всех приложениях офисного пакета Google, вы можете сотрудничать в формах с другими соавторами. Для этого перейдите в дополнительные настройки в правом верхнем углу и выберите пункт «Настройки доступа». Здесь вы можете указать редакторов из списка электронных адресов, а также возможность изменять разрешения и параметры доступа.
Добавляем форму в письмо
Когда ваш опрос будет создан, определитесь, каким образом привлечь респондентов: разместить форму на сайте, поделиться в соцсетях или отправить по электронной почте. Рассмотрим, как с помощью редактора eSputnik сделать так, чтобы в письме получатель увидел не длиннющую ссылку с набором букв, цифр и символов, а красиво оформленный призыв заполнить форму.









































