В данной статье рассмотрим, как передать сделку из SberCRM при переходе ее на этап Счет оплачен в googleSheets
Задача
При переходе сделки на этап Счет оплачен в SberCRM — передаем данные сделки, контакта или других связанных сущностей в googleSheets
Создание процесса в MoreKIT
Первым делом — создадим процесс, который будет принимать данные из SberCRM, когда сделка будет переходить на нужный этап

После создания процесса — настроим отправку данных из SberCRM на процесс MoreKIT
Создание исходящей интеграции
Следующим шагом — создадим настройки для исходящих из SberCRM данных
Необходимо перейти в Настройки —> Настройка интеграции —> Исходящие интеграции
Нажимаем на кнопку Новая исходящая интеграция

Здесь присваиваем название, системное имя и описание, что будет делать интеграция.

Далее выбираем основной интеграционный триггер-объект. В нашем случае — это будут сделки

Теперь необходимо выбрать поля, которые нам должны будут приходить. Здесь лучше выбрать все поля, так как чем больше данных — тем лучше

Также отмечаем связанные сущности со сделкой по своему усмотрению. В данном кейсе это будут: организация, ответственный и контакт сделки
Подключение к процессу MoreKIT
На следующем шаге создания интеграции нам потребуется ссылка на наш созданный процесс в MoreKIT. Необходимо перейти в схему и скопировать ссылку из первоначального блока

Вставляем ссылку в Параметры интеграции

Нажимаем Завершить. Интеграция создана

Настройка автоматизации
Следующим шагом нам нужно настроить событие-триггер, которое будет отправлять данные на наш процесс. Настроить его можно в разделе Инструменты —> Автоматизации
Создаем новую автоматизацию


Здесь производим следующие настройки:
- Объект: сделки
- Событие: Стадия сделки изменена
- Тип действия: Исходящая интеграция
- Действие: MoreKIT (название нашей созданной интеграции)
- Название — на свое усмотрение
Тестирование отправки
Далее — перейдем в сделку и передвинем ее на этап Счет оплачен

Проверим события в процессе MoreKIT, нам должно прийти событие после смены этапа


Здесь необходимо найти параметр state, данный параметр содержит название статуса, на который перешла сделка. В нашем случае — этап Счет оплачен равен значению billPaid
Чтобы не получать события на данный процесс со всех статусов — пропишем фильтр в первоначальном блоке. Данный фильтр будет отсеивать запросы из SberCRM, у которых параметр state не будет равен billPaid. Данное действие позволит уменьшить количество событий на процесс MoreKIT
Если вам нужно обрабатывать несколько статусов, вы можете прописать фильтр вида:
{{state}} один из <перечислить несколько статусов через enter>

Вынесем блок HTTP запроса и сохраним схему, пока оставим его пустым

Настройка google таблицы
Создадим google таблицу, в первой строчке сделаем заголовки, какие данные нам нужно передать

В таблице будут следующие столбцы:
- ID сделки
- Название сделки
- Описание
- Бюджет сделки
- Контактное лицо
- email пользователя
- телефон пользователя
- Дата смены статуса
Настройка скрипта-обработчика
Теперь необходимо повесить на таблицу скрипт-обработчик. Для этого нам необходимо перейти в меню AppScript
Переходим в Расширения —> App Script

После перехода на страницу appscript мы попадем в окно с пустой функцией, стираем ее полностью и вставляем скрипт-обработчик данных
function doPost(request) {
Logger.log(JSON.parse(request.postData.contents));
var data = JSON.parse(request.postData.contents),
sheetName = data.sheetName,
sheet = SpreadsheetApp.getActive().getSheetByName(sheetName),
table_headers = get_table_headers(sheet),
search_by = request.parameter.search_by;
if (table_headers.length == 0) {
table_headers = Object.keys(data);
fill_headers(sheet, table_headers);
}
if (!search_by) {
return ContentService.createTextOutput(JSON.stringify({'error': 'отсутствует обязательный параметр search_by'}));
}
if (is_object(data)){
var fill_func = fill_object;
if (is_array(data)) fill_func = fill_array;
fill_func(data, table_headers, sheet, search_by);
} else {
return ContentService.createTextOutput(JSON.stringify({'error': 'Неизвестный формат данных'}));
}
return ContentService.createTextOutput(JSON.stringify({'result': 'ok'}));
}
function is_array(data){
return typeof(data) === 'object' && data.length;
}
function is_object(data){
return typeof(data) === 'object';
}
function fill_array(data, table_headers, sheet, search_by){
data.forEach((v) => {fill_object(v, table_headers, sheet, search_by)});
}
function fill_object(data, table_headers, sheet, search_by) {
var column_id = table_headers.indexOf(search_by);
if (column_id < 0) return "Проверьте параметр search_by";
var row = get_row_id_by_lead_id(data[search_by], column_id + 1, sheet);
var rowData = object_to_list(data, table_headers);
for (var i = 0; i < rowData.length; i++) {
if (rowData[i] !== '' && rowData[i] !== undefined) {
var cell = sheet.getRange(row, i + 1);
if (cell.getFormula()) {
cell.setValue('').setFormula(cell.getFormula());
} else {
cell.setValue(rowData[i]);
}
}
}
}
function fill_headers (sheet, headers) {
sheet.getRange(1, 1, 1, headers.length).setValues([headers]);
}
function get_table_headers(sheet){
var cols = sheet.getLastColumn();
if (cols > 0)
return sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
else
return [];
}
function object_to_list(data, table_headers){
var result = [];
for (i in table_headers){
result.push(data[table_headers[i]] || '');
}
return result;
}
function get_row_id_by_lead_id(lead_id, column, sheet){
var last_row = sheet.getLastRow();
if (last_row > 1){
var data = sheet.getRange(2, column, last_row, 1).getValues();
Logger.log("data " + data);
for (i in data){
if (data[i] && data[i][0] == lead_id)
return parseInt(i) + 2;
else if (data[i] && data[i] == "")
return parseInt(i) + 2;
}
}
return parseInt(last_row) + 1;
}Разворачиваем скрипт
После вставки — скрипт необходимо развернуть, чтобы он начал работать на таблицу. Нажимаем Начать развертывание справа сверху —> Новое развертывание

Тип развертывания: веб-приложение

Доступ: Все

Подтверждаем, что мы доверяем действиям скрипта

Выдаем права скрипту на использование таблицы

После выполненного развертывания — нам необходимо скопировать ссылку на наше веб-приложение, на нее MoreKIT будет отправлять запрос с данными
Настройка процесса в MoreKIT
Следующим шагом — необходимо выстроить схему передачи данных в нашу google таблицу
Здесь потребуется 2 блока:
- Дата и время — сконвертирует дату из SberCRM в человекочитаемый вид
- Webhook — отправит запрос с данными в таблицу
Схема будет выглядеть следующим образом:

Чтобы легко прописать {{маски}} к данным, вы можете открыть входящие данные полученного события и кликать мышкой по нужным данным, MoreKIT скопирует нужный путь, который нужно вставить в маску

Описание блоков схемы

#4 Дата и время — данный блок переведет дату Из формата 2026-04-29T15:13:02.503677Z в формат 2026-04-29 15:13:02 (или свой формат). Подробнее про форматы даты можно почитать здесь. После настройки блока к нему можно обратиться маской {{#4.Дата}}

#5 Webhook — Отправит запрос с нужными вам данными в таблицу
Основные параметры блока:
- URL: ссылка на наше развертывание
- Метод запроса: POST
- Формат: JSON
- Игнорировать ошибку тайм-аута: по умолчанию MoreKit ожидает 1 секунду, чтобы получить ответ от сервиса, на который отправляется webhook. При использовании данной настройки ошибки тайм-аута будут игнорироваться
- GET-параметр
search_by: здесь указываем название заголовка, по которому будет производиться поиск уже существующей в таблице строки для ее обновления - POST-параметр: здесь указываются параметры в формате ключ: значение. Ключ — ваше название заголовка. Значение — то, что должно передаваться из входящих данных от SberCRM.
Обязательно добавьте параметрSheetName— это название листа в таблице, иначе отправки не произойдет
Тестирование процесса
Осталось проверить наш процесс. Для этого — можем либо передвинуть сделку на этап Счет оплачен снова, либо повторить уже полученное событие в MoreKIT, оно перезапустится на текущую схему

Перезапускаем событие и проверяем таблицу

Как видим — данные успешно заполнились, в MoreKIT видим успешно выполненное событие

Итог
В данной статье рассмотрели, как передать сделку из SberCRM при переходе ее на этап Счет оплачен в googleSheets. Была настроена отправка данных со стороны SberCRM, настроена схема передачи данных в MoreKIT и по итогу таблица успешно заполнилась