Выгрузить лиды из Битрикс24 в Google таблицы

Google Apps script который выгружает в активную вкладку Google таблицы лиды по месяцам в формате Месяц | Суммарно лидов

function getMonthlyLeadCountsFromBitrix24() {
  // URL вебхука
  const webhookUrl = "https://localhost/rest/18/webhook/crm.lead.list"; // ссылка на вебхук

  // Параметры фильтрации (базовые)
  const baseParams = {
    "filter": {
      "SOURCE_ID": ["UC_YU20FO", "UC_06SQ2T", "26|0C898C2E-B8CB", "37", "36", "UC_5COASH", "UC_8D34EU", "35", "UC_CIMT4Q"], // Источники лида из Битрикс24 которые нужно выгрузить в таблицу
      ">=DATE_CREATE": "2024-07-01T00:00:00", // Начальная дата
      "<=DATE_CREATE": "2024-12-31T23:59:59"  // Конечная дата
    },
    "select": ["ID", "DATE_CREATE"], // Поля для выборки
    "order": { "DATE_CREATE": "ASC" }, // Сортировка по дате
    "start": 0 // Начальный индекс для пагинации
  };

  let allLeads = [];
  let start = 0;

  // Цикл для загрузки всех данных
  while (true) {
    const params = { ...baseParams, "start": start };

    // Отправляем POST-запрос к API Битрикс24
    const response = UrlFetchApp.fetch(webhookUrl, {
      method: "post",
      contentType: "application/json",
      payload: JSON.stringify(params)
    });

    // Парсим ответ
    const data = JSON.parse(response.getContentText());
    const leads = data.result;

    if (!leads || leads.length === 0) {
      break; // Если данные закончились, выходим из цикла
    }

    allLeads = allLeads.concat(leads);

    // Проверяем наличие следующей страницы
    if (!data.next) {
      break;
    }

    start = data.next; // Устанавливаем индекс следующей страницы
  }

  if (allLeads.length === 0) {
    Logger.log("Нет данных для выбранного периода.");
    return;
  }

  // Группировка лидов по месяцам
  const monthlyLeadCounts = {};
  allLeads.forEach(lead => {
    const date = new Date(lead.DATE_CREATE.split("T")[0]); // Преобразуем дату в объект
    const monthLabel = `${date.getFullYear()}-${pad(date.getMonth() + 1)}`; // Формат: YYYY-MM

    monthlyLeadCounts[monthLabel] = (monthlyLeadCounts[monthLabel] || 0) + 1;
  });

  // Получаем активный лист Google Таблицы
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // Очищаем предыдущие данные
  sheet.clear();

  // Заголовки
  const headers = ["Месяц", "Количество лидов"];
  sheet.appendRow(headers);

  // Записываем данные в таблицу
  for (const [month, count] of Object.entries(monthlyLeadCounts)) {
    sheet.appendRow([month, count]);
  }

  Logger.log("Данные успешно добавлены в таблицу.");
}

// Добавление ведущего нуля для формата даты
function pad(number) {
  return number < 10 ? `0${number}` : number;
}

 

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

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

четыре × 1 =