Skip to content
Getcourse API
Menu
  • Главная
  • Продукты
    • TCD
    • Информатор
    • Помощник Геткурс
  • Услуги
    • GetCourse
    • Вебинары
    • SaleBot и создание чат-ботов
    • Инфраструктурные решения
    • Аудио/видео продакшн
  • Обо мне
Menu

Работаем с Google Forms и GetCourse

Posted on 09.07.202209.07.2022 by backtrack

Одна из недавних задач, которые мне приходилось решать, это передача сведений о заполнении формы Google на GetCourse. Я покажу как работать с формами Google без внешних серверов и php-скриптов.

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

Сначала не много логики

Первое, что пришло мне в голову, это каким-либо образом ловить событие onSubmit для формы, а затем через API GetCourse в доп.поле выставлять значение, что форму заполнили. В дальнейшем можно сформировать сегмент, для просмотра пользователей которые ответили на вопросы в форме и даже уведомлять ответственного учителя или менеджера о новом ответе.

Инструментарий

Первым делом мы будем использовать дополнительные поля в GetCourse. Так-же воспользуемся публичным API GC, а промежуточный обработчик напишем на Google Apps Scripts. В общем поехали.

Создаем доп.поле и тестируем API.

Сразу добавляем новое дополнительное поле

Выбираем тип да/нет и заполняем название, убедитесь, что в конце названия случайно не был проставлен пробел. Это важно для дальнейшего функционирования скрипта.

Следующим шагом нам нужно используя средства публичного API GetCourse как-то менять значение этого поля. По причине того, что так просто протестировать ничего не получится из-за специфической структуры самих API-запросов, то тестировать изменение этого поля мы будем уже используя Google Apps Script.

Работаем с Google

Первым шагом создаем обычную форму Google и заполняем её необходимым содержимым. Обязательно в форме первым полем должно быть указан сбор email.

Обращаю Ваше внимание на то, что в связке с GetCourse нельзя использовать стандартный пункт в настройках формы «Разрешить собирать email».

Этот пункт должен быть выключен

Далее необходимо создать новый скрипт. Для этого возле Вашей аватарки Google нажмите на три вертикальных точки и выберите там «Редактор скриптов» как на скрине ниже.

После этого у Вас откроется редактор и будет создана первая функция myFuncion { }, её необходимо сразу удалить.

Далее перейдите по адресу https://адрес_школы/saas/account/api и скопируйте ключ, если ключа еще нет, то просто нажмите на кнопку «Сгенерировать ключ».

Пишем тестовый код

Код для тестирования
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
const uri                  = 'https://адрес_школы/pl/api/users';
const getcourseApiKey      = 'kCAKOlLd...'; //Ключ API
 
function PushDataToGetCourse(mail='email администратора') {
 
  let user = {};
  user.email     =  mail;
  user.addfields = {'Название поля':'1'};
  let system = {refresh_if_exists: 1};
 
  let getcourse = {user: user, system: system};
 
  let data = JSON.stringify(getcourse);
  var encoded = Utilities.base64Encode(data, Utilities.Charset.UTF_8);
 
  var options = {
    'method': 'post',
    'headers': { 'Content-Type': 'application/x-www-form-urlencoded' },
    payload: {
      action: 'add',
      key: getcourseApiKey, params: encoded
    }
  }
 
  var response = UrlFetchApp.fetch(uri, options);
  Logger.log(response);
}

В листинге кода приведённом выше замените адрес_школы на свой, также укажите ваш ключ API, впишите свой email в поле «email администратора» и укажите название Вашего поля в фигурных скобках.

Также учтите, что если Вы или пользователь укажет email которого в базе GetCourse нет, то в этом случае платформа создаст нового пользователя с указанной почтой и типом регистрации api

Работаем с событием onSubmit

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

Добавляем новый триггер

Далее необходимо указать условия запуска:
1. В блоке «Выберите функцию» указываем нашу onFormSubmit
2. Развертывание оставляем как есть, должно быть «основное развертывание»
3. «Выберите источник мероприятия» устанавливаем в положение «Из формы»
4. «Выберите тип события» устанавливаете в положение «При отправке формы»
Далее могут выскакивать окошко с просьбой авторизоваться в аккаунте. Это нормально.

Блок авторизации в Google нужный для работы с триггером.

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

Что-бы всё заработало корректно, Вам необходимо убрать всё лишнее с аргументов функции в 4й строке, там должно остаться только mail. В 36й строчке нужно в одинарных кавычках указать id формы с которой данные должны подгружаться. Взять этот id можно в адресной строке браузера когда Google форма открыта.

И наконец проверьте, что бы в 46й строке был корректно указан вызов «геткурсной» функции.

Создаем развёртывание

Перейдите в редактор кода Google Apps Script и нажмите на кнопку «Начать развертывание» и в выпадающем меню выберите «Новое развертывание».

В появившемся окне напротив подписи «Выберите тип» нажмите на иконку шестеренки и в меню выберите Веб-приложение.

На следующем шаге введите любое описание, желательно понятное Вам, возможно таких анкет и развертываний к ним у вас будет много и желательно каждому давать осмысленные названия. Доступ оставляете «Только у меня» и «Запуск от имени» так же оставляете по умолчанию (От моего имени) и нажимаете кнопку «Начать развертывание».

Финальный листинг кода и тестирование

Финальный вид кода
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
const uri                  = 'https://..../pl/api/users'; // <= Укажите здесь  адрес школы
const getcourseApiKey      = '...'; // <= Укажите ключ API
 
function PushDataToGetCourse(mail) {
 
  let user = {};
  user.email     =  mail;
  user.addfields = {'Заполнил анкету?':'1'}; // <= Укажите здесь название поля в GetCourse
  let system = {refresh_if_exists: 1};
 
  let getcourse = {user: user, system: system};
 
 
  let data = JSON.stringify(getcourse);
  var encoded = Utilities.base64Encode(data, Utilities.Charset.UTF_8);
 
  var options = {
    'method': 'post',
    'headers': { 'Content-Type': 'application/x-www-form-urlencoded' },
    payload: {
      action: 'add',
      key: getcourseApiKey, params: encoded
    }
  }
 
  var response = UrlFetchApp.fetch(uri, options);
 
  Logger.log(response);
 
}
 
 
//Функция которая вызывается когда форма отправлена
function onFromSubmit() {
 
  var app = FormApp.openById('....'); // <= Укажите здесь ID Google-формы
 
  var formResponses = app.getResponses();                //Получаем все ответы
  var latest = formResponses[formResponses.length - 1];  //Получаем последний
  var itemResponses = latest.getItemResponses();         //Получаем массив ответов
 
  const now = new Date();
  
  const email    = itemResponses[0].getResponse();
 
  PushDataToGetCourse(email);
 
}

Не забудьте заменить(указать) все необходимые для кода значения, а так же в самой форме Google сделать первое поле, текстовое, обязательное и спрашивать в этом поле Email пользователя.

Результат проделанной работы

Your browser does not support the video tag.

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Рубрики

  • Yandex DataLens
  • Дайджест новостей
  • Для начинающих
  • Курилка техспеца
  • По фану
  • Разработка

Мы используем куки для наилучшего представления нашего сайта.

Если Вы продолжите использовать сайт, мы будем считать что Вас это устраивает.

Вы можете узнать больше о том, какие файлы cookie мы используем, или отключить их в настройках.

Getcourse API
Powered by  GDPR Cookie Compliance
Политика конфеденциальности

Этот веб-сайт использует файлы cookie, чтобы мы могли предоставить вам наилучший пользовательский опыт. Информация о файлах cookie хранится в вашем браузере и выполняет такие функции, как распознавание вас, когда вы возвращаетесь на наш веб-сайт, и помогает нашей команде в понимании того, какие разделы веб-сайта вы считаете наиболее интересными и полезными.

Строго необходимые файлы cookie

Строго необходимые файлы cookie должны быть включены постоянно, чтобы мы могли сохранить ваши предпочтения для настроек файлов cookie.

Если вы отключите этот файл cookie, мы не сможем сохранить ваши настройки. Это означает, что каждый раз, когда вы посещаете этот веб-сайт, вам нужно будет снова включать или отключать файлы cookie.