Выгрузка данных из Google Sheets в amoCRM


Автоматизируем выгрузку данных из Google Sheets в amoCRM.

Задача

Передать редактируемую строку из таблицы Google Sheets в amoCRM по условию изменения этой строки.

В данном примере показывается процесс настройки передачи данных из сервиса Google Sheets в amoCRM. Сначала нужно передать данные в MoreKit, после чего передать их в amoCRM из MoreKit.

Сценарий

Рассмотрим следующий сценарий:
Есть таблица Google Sheets, в которой содержатся данные по пользователям. Эти данные могут изменяться в таблице динамически. При изменении каких-либо данных по пользователю необходимо получить их в MoreKit для реализации дальнейшей логики передачи в amoCRM.

Создание процесса

Создание процесса в MoreKit

Нужно создать процесс в MoreKit с типом «Другое». Данный процесс будет принимать в себя данные из Google Sheets. Ссылку, генерируемую первоначальным блоком необходимо передать в скрипт.

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

Создание скрипта

Настройка скрипта

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

Настройка скрипта-обработчика таблицы происходит во вкладке Расширения —> appScript:

После перехода в appScript откроется страница с пустой функцией. Нужно все стереть и вставить скрипт из инструкции. Данный скрипт отправляет в MoreKit ту строку, которая будет отредактирована в таблице.

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

Код скрипта

function sendColumnData(row) {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadsheet.getSheets()[0];
  if (sheet) {
    
var data = sheet.getRange("A"+row+":K"+row).getValues();
var formattedData = [];
for (var rowIndex = 0; rowIndex < data.length; rowIndex++) {
var row = data[rowIndex];
var rowData = {};
for (var columnIndex = 0; columnIndex < row.length; columnIndex++) {
var cellReference = String.fromCharCode(65 + columnIndex) + (rowIndex + 1);
rowData[cellReference] = row[columnIndex];
}
formattedData.push(rowData);
}
var jsonData = {
rowData
};
var options = {
"method": "post",
"contentType": "application/json",
"payload": JSON.stringify(formattedData)
};
var response = UrlFetchApp.fetch("Ссылка из первоначального блока", options);
Logger.log(response.getContentText());
}
}
function onEdit(e) {
if (e) {
var sheet = e.source.getActiveSheet();
var range = e.range;
if (range.getRow() > 1) {
sendColumnData(range.getRow());
}
}
}

Результат вставки скрипта

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

Развертывание скрипта

Справа вверху будет кнопка развертывания. Нажимаем “Начать развертывание” → “Новое развёртывание”.


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

Нажимаем «Начать развертывание»

После того, как скрипт развернут осталось настроить триггер, в результате срабатывания которого будет отправляться скрипт

Настройка триггера

На странице appScript слева присутствует иконка часиков под названием «Триггеры». Заходим в триггеры и добавляем новый триггер.


Параметры триггера

В настройках триггера указываем следующее:

    • Выберите функцию — выбираем onEdit, так как именно данная функция запускает функцию запуска отправления данных, когда редактируется строка.

    • Выполняемое развертывание — выбираем «основное развертывание».

    • Выберите источник мероприятия — выбираем «Из таблицы», так как работаем с таблицей.

Проверка событий в MoreKit

После того, как все сделано можно пробовать редактировать строку.

Журнал выполнения

При редактировании строки произойдет ее отправка в MoreKit. Чтобы убедиться в успешной отправке можно перейти во вкладку «Количество выполнений», она находится прямо под иконкой часов «Триггеры». В ней можно посмотреть статистику по результатам выполнения скрипта.

Получаем данные

После отправки данных можно проверить вкладку «События» в MoreKit и посмотреть на данные, которые получили из MoreKit.
Пример полученных данных:

Как видим — данные измененной строки получены в соответствии с выбранным диапазоном ячеек, который указывали в скрипте и теперь мы можем работать с ними в MoreKit.

Обновление данных в amoCRM

Обновляем данные

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

Проверяем контакт

Как видим, изменения в сделке отобразились, данные из таблицы google sheets были успешно записаны в контакт amoCRM.

Немного про Google AppScript

Google appScript предоставляет довольно мощный функционал для работы со скриптами, на случай если понадобится изменить логику отправки и обработки отправляемых данных скриптом. В случае такой необходимости — советуем обратиться к официальной документации Google appScript, где описаны возможные методы и принцип работы appScript.