March 6

Автоматическая передача регистраций из GetCourse в Google-таблицы через скрипт 

Иногда требуется регистрации в геткурс передавать другим сотрудникам - маркетологам или таргетологам для дальнейшей работы с ними.
Но 100 раз на день делать выгрузку из геткурса в эксель - мягко говоря не очень-то и удобно тех.специалисту геткурс.

Давать доступы другим сотрудникам к платформе - тоже не выход.

И возникает необходимость автоматической выгрузки регистраций из GetCourse в Google-таблицы.

Есть более удобное решениеGoogle-скрипты! 💡 Они позволяют автоматизировать процесс, записывать данные в любой лист, а если структура таблицы изменится, достаточно просто обновить поля в запросе.

Теперь давай разберёмся, как это настроить. 🔧 Мы не будем глубоко погружаться в код, а рассмотрим базовый варианткак передавать данные о регистрациях в таблицу 📋. Это избавит тебя от постоянных ручных выгрузок и ускорит работу. 🚀

Готов? Тогда поехали! 🎯

🚀 Создание скрипта: первый шаг к автоматизации

Для передачи данных из GetCourse в Google-таблицы нам понадобится Google Apps Script. Если у тебя есть аккаунт в Google (а он точно есть 😏), можешь сразу переходить по ссылке script.google.com

Создаем новый проект:

Новый проект открылся, можно его как-то назвать, а можно оставить как есть.

Переходим в раздел Код.gs, в правой части стираем то, что там есть.

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

Вот код, копируйте его:

/** * Добавление строки в Гугл-таблицу.
 * 
 * Скрипт вызывается GET или POST запросом с параметрами:
 * SSID: идентификатор таблицы 
 * SHEET: имя или индекс листа, по умолчанию лист с индексом 0 
 * DATA: набор данных, разделенных запятой 
 * 
 * Больше скриптов для Геткурса здесь: https://t.me/pro_getcourse 
 */ 
 
 function doGet(request){
  return doRequest(request) 
 } 
 
 function doPost(request){
  return doRequest(request) 
  } 
  
  function doRequest(request) {
   try {
    const sheet = findSheet(request)
    
    const DATA = request.parameter['DATA']
    if( !DATA ) throw {code: 'DATA_NOT_DEFINED', message: 'No DATA'} 
    
    const data = [...DATA.matchAll(/(?:"(.*?)"|([^,]*))(?:,?|$)/g)]
     .filter(m => m[0])
     .map(m => (m[1] ?? m[2] ?? '').trim()) 
     
    const lock = LockService.getScriptLock()
     lock.waitLock(60000) 
     sheet.appendRow(data) 
     lock.releaseLock() 
     
    return sendResult() 
  } catch ( error ) {
    console.log(error) 
    return sendError(error) 
  } 
 } 
 
 
 function findSheet(request) {
  const SSID = request.parameter['SSID'] 
  if( !SSID ) throw {code: 'SSID_NOT_DEFINED', message: 'SSID is not defined'} 
  
  const SHEET = request.parameter['SHEET'] || '0' 
  if( !SHEET ) throw {code: 'SHEET_NOT_DEFINED', message: 'SHEET is not defined'} 
  
  let ss
  try {
   ss = SpreadsheetApp.openById(SSID) 
   if( !ss ) throw '' 
 } catch ( e ) {
   console.log(e) 
   throw {code: 'SSID_NOT_FOUND', message: `SpreadSheet is not found: ${SSID}`} 
 } 
 
  let sheet = ss.getSheetByName(SHEET) ?? ss.getSheets()?.[parseInt(SHEET)] 
  if( !sheet ) throw {code: 'SHEET_NOT_FOUND', message: `Sheet is not found: ${SHEET}`} 
 
  return sheet 
} 

function sendResult(res) {
    return json({success: 1, data: res}) 

} 

function sendError(error) {
    return json({success: 0, error})
} 

function json(res) {
    return ContentService.createTextOutput(JSON.stringify(res)).setMimeType(ContentService.MimeType.JSON) 
}

Далее сохраняем его по кнопке сохранения - выделила красным.

🚀 Запускаем скрипт в работу

Теперь скрипт нужно развернуть, чтобы он начал работать. Это похоже на включение программы — пока мы его не активируем, он просто «лежит» в редакторе и ничего не делает.

При развертывании скрипт запускается в специальной среде, где он сможет принимать и обрабатывать запросы. После этого GetCourse сможет передавать ему данные, а он — записывать их в таблицу.

Выбираем Веб-приложение.

🔥 Важные моменты, которые нужно учесть!

📌 Описание можно оставить пустым. Оно нужно только, если в будущем будешь вносить изменения в скрипт и захочешь записывать, что именно поменялось. Но это не обязательно, так что пока просто пропускаем.

📌 Запускай веб-приложение от своего имени. Когда GetCourse будет отправлять данные, он сам по себе не авторизован. А вот если скрипт выполняется от твоего аккаунта, запрос пройдёт без проблем.

📌 Доступ должен быть открыт для всех. По той же причине — скрипт должен работать с внешними запросами, иначе GetCourse не сможет к нему обратиться.

💡 Не переживай, это безопасно! Доступ к скрипту получит только тот, у кого есть ссылка. Посторонние люди её не знают, так что кроме тебя и GetCourse никто воспользоваться этим не сможет. 🚀

Теперь просто нажимаем «Начать развертывание»!

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

Просто подтверждаем разрешения нажав Предоставить доступ, затем выбираем наш аккаунт.

Потом вылетит предупреждение - но не пугаемся! Мы доверяем сами себе и нажимаем Advanced

После жмем Go to (название вашего проекта)

Тут снова не стоит заморачиваться — ты просто даёшь разрешение своему же скрипту, а не какому-то стороннему приложению. Всё остаётся внутри твоего аккаунта 😉 В общем, все разрешаем - Allow.

После что-то появится на экране - здесь можно просто закрыть это окно. Это глюк.

А далее видим:

Ссылку URL обязательно скопировать! Например в текстовый файл, мы будем добавлять к ней параметры.

Назовем эту ссылку Параметр 1

https://script.google.com/macros/s/AKfycbxCFHgi5wkTWLTNL7slsLhWYiaOAw54bdANtcW_KdHSivXSDjkPOjNrx_BU8Eb-YDrS/exec

🚀 Следующий шаг — создаем пустую google-таблицу!

!!! И сразу важный момент - табличка должна быть доступна по ссылке, и доступ должен быть как Редактор.

Сразу лучше сделать чтобы не забыть.

Далее нужно скопировать из ссылки на таблицу ее идентификатор. Он находится прямо от значения /d/ и до значения /edit

выделю специально как пример:

https://docs.google.com/spreadsheets/d/1NiGzOFeVGp5BGvGfgGR_9K3jjrq4Z0RrQ4mOwY9yqwI/edit?gid=0#gid=0

Это будет значение для параметра SSID 1NiGzOFeVGp5BGvGfgGR_9K3jjrq4Z0RrQ4mOwY9yqwI

Назовем его Параметр 2.

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

У меня это ID, Имя, Фамилия, Email, Телефон, Город, Дата регистрации в геткурсе, Дата добавления в группу и UTM-метки

Все эти показатели нужно написать как переменные геткурса - и это будет Параметр 3

Вот как это будет:

ID - {object.id}

Имя - {object.first_name}

Фамилия - {object.last_name}

Email - {object.email}

Телефон - {object.phone}

Город - {object.city}

Дата регистрации в геткурсе - {object.created_at}

Дата добавления в группу - {object.today}

UTM-метки - {object.create_session.utm_source},{object.create_session.utm_medium},{object.create_session.utm_campaign},{object.create_session.utm_content},{object.create_session.utm_term},{object.create_session.utm_group},{object.create_session.clickid}

Теперь делаем салатик 😉

Параметр 1 + Параметр 2 + Параметр 3

Параметр 1 https://script.google.com/macros/s/AKfycbwhMgbqtg74TBX3Y5azSn661M80siMIT4lOr66R7mdL-hZ_LpC3wQ7b0xBYyoH73K4B/exec?

После него ставим ? без пробелов

Пишем SSID= и далле Параметр 2 SSID=18dm6v2fYVWDCilYhP5HY7DUTXW0ND8riZtgn2jLP0Oc

Пишем &DATA= и далле Параметр 3

&DATA={object.id},{object.first_name},{object.last_name},{object.email},{object.phone},{object.city},{object.created_at},{object.today},{object.create_session.utm_source},{object.create_session.utm_medium},{object.create_session.utm_campaign},{object.create_session.utm_content},{object.create_session.utm_term},{object.create_session.utm_group},{object.create_session.clickid}

ИТОГО:

https://script.google.com/macros/s/AKfycbwhMgbqtg74TBX3Y5azSn661M80siMIT4lOr66R7mdL-hZ_LpC3wQ7b0xBYyoH73K4B/exec?SSID=18dm6v2fYVWDCilYhP5HY7DUTXW0ND8riZtgn2jLP0Oc&DATA={object.id},{object.first_name},{object.last_name},{object.email},{object.phone},{object.city},{object.created_at},{object.today},{object.create_session.utm_source},{object.create_session.utm_medium},{object.create_session.utm_campaign},{object.create_session.utm_content},{object.create_session.utm_term},{object.create_session.utm_group},{object.create_session.clickid}

🚀 Финальный шаг — подключаем скрипт к GetCourse

Осталось последнее — добавить всё это в процесс в GetCourse, чтобы данные начали передаваться автоматически. Почти финишная прямая! 🏁

Создаем процесс по пользователям.

Пишем название процесса, выбираем параметр Периодическая проверка, условие - Добавление в группу (ставим группу, куда идут регистрации), и выставляем период с какой даты и времени начинать и заканчивать проверку - Сохранить.

Переходим на вкладку Процесс.

У нас всего 3 этапа: Начало работы, блок Операция - вызвать url - Завершить процесс.

Настройки блока Операция:

Метод - выставляем GET

URL - вставляем подготовленную ссылку https://script.google.com/macros/s/AKfycbwhMgbqtg74TBX3Y5azSn661M80siMIT4lOr66R7mdL-hZ_LpC3wQ7b0xBYyoH73K4B/exec?SSID=18dm6v2fYVWDCilYhP5HY7DUTXW0ND8riZtgn2jLP0Oc&DATA={object.id},{object.first_name},{object.last_name},{object.email},{object.phone},{object.city},{object.created_at},{object.today},{object.create_session.utm_source},{object.create_session.utm_medium},{object.create_session.utm_campaign},{object.create_session.utm_content},{object.create_session.utm_term},{object.create_session.utm_group},{object.create_session.clickid}

Время - везде ставим 10 сек.

Верификация - Да

Сохранить.

После этого запускаем процесс.

🎉 Всё готово!

Теперь скрипт запущен, доступы настроены, и GetCourse сможет автоматически передавать регистрации в Google-таблицы. Больше никаких ручных выгрузок — всё работает само!

Осталось только протестировать процесс, убедиться, что данные приходят корректно, и наслаждаться автоматизацией. 🚀

У меня всё получилось 👇👇👇

Пробуй, экспериментируй, а если будут вопросы — пиши! ✉
И, кстати, заходи на мой Telegram-канал — там есть полезные лайфхаки для продвижения. 🚀