March 5, 2024

Экспорт любых форм в Google-таблицы из GetCourse

Для экспорта потребуется специальная таблица с настроенным App Script и скрипт для GetCourse

Таблица: https://docs.google.com/spreadsheets/d/1BDpAIzvQttZwcirHu7-KGKLMG1P2PiIeXSydRCHjg-g/edit?usp=sharing

Перейдите в нее и нажмите "Файл > создать копию". У вас копируется не только таблица, но и настройки App Script внутри нее

App Script — это сервис внутри гугл-таблиц, который позволяет быстро сделать бесплатный сервер и возвращать данные с таблицы для любых скриптов извне. Данные для настройки этого бесплатного сервера вы скопировали, остается запустить ваш новый сервер. Для этого перейдите в App Script

Важно! Если открытие App Script выдает ошибку доступа, то убедитесь, что вы авторизованы под той же учетной записью, под которой копировали таблицу. Только владелец может зайти в App Script

Теперь запустим наш сервер, чтобы таблица могла реагировать на запросы

В AppScript начните развертывание, нажав на "новое развертывание"

Не меняйте предлагаемые настройки. Доступ должен быть от вашего имени и доступен всем. Можете использовать любые новые учетные записи gmail для развертывания, если вас смущает как-то связывать свои учетные записи в интернете — свежие аккаунты тоже будут исправно работать

Согласитесь на запуск. Веб-приложение запрашивает доступ к вашей учетной записи google. Это безопасно

На этом этапе нажмите "show Advanced => go to json"

Затем нажмите allow.

Вам выдаст вашу специальную ссылку на таблицу

По этой ссылке никто не сможет перейти в вашу таблицу, но при переходе по ней сервер таблиц будет отдавать нам события. Скопируйте ссылку на веб-приложение. Также эту ссылку вы всегда сможете найти в AppScript в разделе "управление развертываниями".

Теперь откройте код скрипта для GetCourse и замените ссылку в кавычках в такой строке:

let excelSurveyExporterMacros = 'https://script.google.com/macros/s/AKfycbwwlkxGyzjR8rtNVy4174AdTQLdv86V2IqgZ1eYTjvdKfNF5zSCNKKUzuY5aiGORBfk/exec'

Готово. Теперь ваша таблица может записывать данные, которые посылает ей скрипт, а скрипт теперь со ссылкой на вашу уникальную базу данных.

Теперь нужно указать, парсить ли имена полей анкет. Поля анкеты являются одним общем полем формы, поэтому если вы хотите, чтобы каждый ответ при экспорте сопровождался названием поля, смените в такой строке false на true

let excelSurveyExporterNames = false;

Также вы можете задать, в какой конкретный лист экспортировать данные. Для этого найдите в коде строку

let excelSurveyExportetSheetName = 'DATA2'

Вместо DATA2 напишите имя вкладки (листа) в гугл-таблице, в которую вы хотите экспортировать данные

Имена листов в самой таблице

По умолчанию скрипт будет пытаться пополнить первый лист DATA.

Варианты установки скрипта

  1. На страницу кодом

Скрипт можно установить в блок JavaScript на странице с нужной формой или анкетой. В этом случае экспортироваться будет только эта форма

2. Кодом в раздел

Вы можете создать тему в разделе "темы", вставить в ее js-часть скрипт и выбрать эту тему в настройках тренинга в качестве оформления. В этом случае скрипт начнет автоматически экспортировать любые формы внутри тренинга. Как вставлять темы

3. Кодом в аккаунт

Вы можете вставить скрипт в настройки аккаунта, если нужно экспортировать все формы и анкеты в аккаунте. Для этого нужно вставить в код для body

<script>let excelSurveyExporterMacros = 'https://script.google.com/macros/s/AKfycbwwlkxGyzjR8rtNVy4174AdTQLdv86V2IqgZ1eYTjvdKfNF5zSCNKKUzuY5aiGORBfk/exec'
  let excelSurveyExporterNames = false;
let excelSurveyExportetSheetName = 'DATA'
  </script>
<script src="https://one-way.dev/projects/web/getscript/ExcelSurveyExporter.min.js"></script>

С заменой ссылки на таблицу на вашу. Код в этом случае будет браться с моего сервера.

Экспорту автоматически подлежат все HTML-элементы с тегом "form". Таким образом, экспортировать можно анкеты, формы и цели

Как не экспортировать отдельные поля

Для запрета экспорта отдельных полей форм добавьте им класс no-export

Для запрета экспорта целей и анкет необходимо добавить в описание поля следующий код:

<div class="not-export-child"></div>