Автоматизируем выгрузку данных из 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.