Как автоматизировать отчёты по продажам

Менеджер по продажам каждый день делает одно и то же: открывает CRM, копирует данные, вставляет в Excel, добавляет графики, отправляет начальнику. На это уходит 30–60 минут в день. В месяц — 10–20 часов впустую.

Представьте: начальник открывает почту в 9 утра, а там уже готовый красивый отчёт с цифрами, графиками и выводами. Это возможно. И это не сложно настроить.

Давайте разберёмся, как автоматизировать отчёты по продажам от сбора данных до отправки.

Архитектура автоматизации

CRM (данные) → Сбор данных → Обработка → Генерация отчёта → Отправка
     ↓              ↓            ↓           ↓                ↓
Амосам         API запрос    Excel/SQL    Word/PDF        Email/Slack
1С/ERP         Google Sheets  Расчёты     Графики
Stripe         Экспорт        Фильтры     Диаграммы

Каждый шаг можно автоматизировать.

Шаг 1: Сбор данных из CRM

Вариант 1: Встроенный экспорт CRM

Большинство CRM (Амосам, Bitrix24, Pipedrive, HubSpot) имеют встроенный экспорт.

Амосам:

  1. Открыть CRM
  2. Список → Экспорт → Выбрать поля (дата, сумма, этап)
  3. Сохранить как CSV

Pipedrive:

  1. Sales → Deals
  2. Export → Выбрать фильтры (дата, статус)
  3. Сохранить Excel

Проблема: Это всё ещё ручная работа. Нужно делать каждый день.

Вариант 2: API CRM + скрипт

Лучший способ — использовать API CRM.

Пример с Pipedrive API:

import requests
import pandas as pd
from datetime import datetime, timedelta

# Параметры
API_KEY = 'your_pipedrive_api_key'
BASE_URL = 'https://api.pipedrive.com/v1'

# Получить все совершённые заказы за сегодня
today = datetime.now().strftime('%Y-%m-%d')
yesterday = (datetime.now() - timedelta(days=1)).strftime('%Y-%m-%d')

response = requests.get(
    f'{BASE_URL}/deals',
    params={
        'api_token': API_KEY,
        'status': 'won',  # только выигранные заказы
        'limit': 500
    }
)

deals = pd.DataFrame(response.json()['data'])

# Фильтр за сегодня
deals['add_time'] = pd.to_datetime(deals['add_time'])
today_deals = deals[deals['add_time'].dt.date.astype(str) == today]

# Сохранить
today_deals[['id', 'title', 'value', 'add_time']].to_excel('sales_today.xlsx', index=False)
print(f"Найдено {len(today_deals)} заказов за {today}")

Запустите этот скрипт каждый день в 6 утра → данные готовы.

Вариант 3: Zapier или Make (no-code)

Если не знаете программирование, используйте no-code платформы.

Zapier:

  1. Создайте Zap: Pipedrive → Google Sheets
  2. Триггер: “New deal won”
  3. Действие: “Create row in Google Sheets”
  4. Запустите каждый день

Make (бывший Integromat): Похоже, но более гибко.

Цена: Zapier $20–100/мес, Make $10–500/мес в зависимости от объёма.

Шаг 2: Обработка и расчёты

Теперь у вас есть сырые данные. Нужно вычислить метрики.

Вариант 1: Excel формулы

Если используете Google Sheets:

Всего заказов: =COUNTA(A:A)-1
Сумма: =SUM(B:B)
Средний чек: =AVERAGE(B:B)
Средняя конверсия: =COUNTIF(C:C, "завершён") / COUNTIF(C:C, "новая вакансия")

Эти формулы автоматически считаются при обновлении данных.

Вариант 2: Python + Pandas

import pandas as pd
from datetime import datetime

# Загрузить данные
df = pd.read_excel('sales_today.xlsx')

# Вычислить метрики
metrics = {
    'Дата': datetime.now().strftime('%d.%m.%Y'),
    'Всего заказов': len(df),
    'Сумма, руб': df['value'].sum(),
    'Средний чек': df['value'].mean(),
    'Максимальный заказ': df['value'].max(),
    'Успешных (%))': (df['status'] == 'завершён').sum() / len(df) * 100
}

# Сравнить с вчера
yesterday_df = pd.read_excel('sales_yesterday.xlsx')
growth = (metrics['Сумма, руб'] / yesterday_df['value'].sum() - 1) * 100

print(f"Выручка: {metrics['Сумма, руб']:,} руб ({growth:+.1f}% vs вчера)")

# Сохранить для использования в отчёте
pd.Series(metrics).to_csv('metrics_today.csv')

Шаг 3: Генерация отчёта

Теперь нужно собрать красивый отчёт.

Вариант 1: Word через python-docx

from docx import Document
from docx.shared import Inches, Pt, RGBColor
from datetime import datetime

doc = Document()

# Заголовок
title = doc.add_heading('Ежедневный отчёт по продажам', 0)
subtitle = doc.add_paragraph(f'Дата: {datetime.now().strftime("%d.%m.%Y")}')

# Ключевые метрики (таблица)
table = doc.add_table(rows=1, cols=2)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'Метрика'
hdr_cells[1].text = 'Значение'

metrics_list = [
    ('Всего заказов', '12'),
    ('Сумма', '150 000 руб'),
    ('Средний чек', '12 500 руб'),
    ('Успешных %', '75%'),
]

for metric, value in metrics_list:
    row = table.add_row()
    row.cells[0].text = metric
    row.cells[1].text = value

# Анализ
doc.add_heading('Анализ', level=1)
analysis_text = """
Сегодня отличный день:
- Количество заказов на 15% выше среднего
- Средний чек вырос на 8% благодаря новому пакету услуг
- Конверсия 75% — лучшая за неделю

Рекомендация: продолжить активную работу, эта тактика работает.
"""
doc.add_paragraph(analysis_text)

# Сохранить
doc.save(f'Report_{datetime.now().strftime("%d_%m_%Y")}.docx')
print("Отчёт сохранён")

Вариант 2: Google Docs (через API)

Если предпочитаете облако:

from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google.auth.oauthlib.flow import InstalledAppFlow
from google.apps import docs_v1

# Подготовить текст
title = 'Отчёт по продажам за 19.03.2026'
content = [
    {'insertText': {'text': title}},
    {'updateTextStyle': {'range': {'startIndex': 0, 'endIndex': len(title)}, ...}},
    {'insertText': {'text': 'Всего заказов: 12\nСумма: 150 000 руб\n...'}},
]

# Создать документ
docs_service = docs_v1.DocsService(...)
doc = docs_service.documents().create(body={'title': title}).execute()

# Добавить содержимое
docs_service.documents().batchUpdate(
    documentId=doc['documentId'],
    body={'requests': content}
).execute()

print(f"Создан документ: {doc['webViewLink']}")

Вариант 3: Готовые шаблоны (PDF через html2pdf)

import pdfkit
from datetime import datetime

html_content = f"""
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <style>
        body {{ font-family: Arial; margin: 40px; }}
        h1 {{ color: #333; }}
        .metric {{ display: inline-block; margin: 20px 40px 20px 0; }}
        .number {{ font-size: 28px; color: #0066cc; font-weight: bold; }}
        .label {{ font-size: 14px; color: #666; }}
    </style>
</head>
<body>
    <h1>Ежедневный отчёт по продажам</h1>
    <p>Дата: {datetime.now().strftime('%d.%m.%Y')}</p>
    
    <div class="metric">
        <div class="number">12</div>
        <div class="label">Заказов</div>
    </div>
    
    <div class="metric">
        <div class="number">150k</div>
        <div class="label">Выручка, руб</div>
    </div>
    
    <div class="metric">
        <div class="number">75%</div>
        <div class="label">Успешных</div>
    </div>
</body>
</html>
"""

pdfkit.from_string(html_content, 'report.pdf')
print("PDF сохранён")

Шаг 4: Отправка

Вариант 1: Email через Python

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.encoders import encode_base64
from datetime import datetime

# Подготовить письмо
msg = MIMEMultipart()
msg['From'] = 'sales-reports@company.ru'
msg['To'] = 'boss@company.ru'
msg['Subject'] = f'Отчёт по продажам {datetime.now().strftime("%d.%m.%Y")}'

# Тело письма
body = """
Добрый день!

Прилагаю сегодняшний отчёт по продажам.

Ключевые цифры:
- Заказов: 12 (план: 10)
- Выручка: 150 000 руб (план: 120 000)
- Успешных: 75%

Детали в приложении.

С уважением,
Автоматическая система отчётов
"""

msg.attach(MIMEText(body, 'plain', 'utf-8'))

# Приложить файл
attachment = open('Report_today.docx', 'rb')
part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment.read())
encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename= Report_today.docx')
msg.attach(part)

# Отправить
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login('sales-reports@company.ru', 'password')
server.send_message(msg)
server.quit()

print("Письмо отправлено")

Вариант 2: Slack уведомление

import requests
from datetime import datetime

slack_message = {
    "text": f"📊 Ежедневный отчёт по продажам за {datetime.now().strftime('%d.%m.%Y')}",
    "blocks": [
        {
            "type": "section",
            "text": {
                "type": "mrkdwn",
                "text": "*Продажи сегодня*\n✅ Заказов: 12\n💰 Выручка: 150,000 руб\n⭐ Успешных: 75%"
            }
        },
        {
            "type": "section",
            "text": {
                "type": "mrkdwn",
                "text": "<https://drive.google.com/file/report|Открыть полный отчёт>"
            }
        }
    ]
}

requests.post(SLACK_WEBHOOK_URL, json=slack_message)
print("Slack сообщение отправлено")

Вариант 3: Google Drive

from google.auth.transport.requests import Request
from google.drive_v3 import DriveService

drive_service = DriveService(...)

file_metadata = {'name': f'Report_{datetime.now().strftime("%d_%m_%Y")}.docx'}

media = MediaFileUpload('Report_today.docx', mimetype='application/vnd.openxmlformats-officedocument.wordprocessingml.document')

file = drive_service.files().create(body=file_metadata, media_body=media, fields='id').execute()

print(f"Загруженo в Drive: {file.get('id')}")

Полная автоматизация: Cron

Чтобы всё работало ежедневно без вашего участия, используйте cron (на Linux/Mac) или Task Scheduler (на Windows).

Cron (Linux/Mac)

  1. Создайте скрипт run_sales_report.sh:
#!/bin/bash
cd /home/user/sales_report
python collect_data.py
python calculate_metrics.py
python generate_report.py
python send_email.py
  1. Добавьте в crontab:
crontab -e

Добавьте строку (каждый день в 7 утра):

0 7 * * * /home/user/sales_report/run_sales_report.sh

Task Scheduler (Windows)

  1. Создайте батник run_report.bat:
@echo off
cd C:\Users\User\sales_report
python collect_data.py
python calculate_metrics.py
python generate_report.py
python send_email.py
  1. Откройте Task Scheduler:
    • New Task
    • Name: “Daily Sales Report”
    • Triggers: Daily at 07:00
    • Actions: Start program → C:\Users\User\sales_report\run_report.bat

Готовые платформы для автоматизации отчётов

Если не хотите писать код, есть готовые сервисы:

ПлатформаЦенаДля чего
Zapier$20–100/месПростая интеграция CRM → Email → облако
Make$10–500/месБолее гибко, чем Zapier
Google Apps ScriptБесплатноЕсли используете Google Sheets
Power Automate$15/пользователь/месДля пользователей Microsoft
Integromat$10–300/месАльтернатива Zapier

Пример полного Pipeline

Время выполнения: 15 минут на настройку, потом автоматически каждый день.

  1. Настройка сбора данных (5 мин)

    • Создаёте Python скрипт, который достаёт данные из Pipedrive API
    • Сохраняет в CSV
  2. Настройка расчётов (3 мин)

    • Скрипт вычисляет метрики через pandas
    • Сохраняет в JSON
  3. Настройка отчёта (5 мин)

    • Скрипт создаёт Word документ
    • Вставляет таблицы и текст
  4. Настройка отправки (2 мин)

    • Скрипт отправляет email
    • Копирует в Google Drive
  5. Настройка расписания (0 мин)

    • Добавляете в cron или Task Scheduler
    • Всё работает автоматически

Результат: Каждое утро в 7 утра начальник получает готовый отчёт с данными и анализом.

Цена: $0–50/мес (если использовать бесплатные инструменты).

Что дальше

После автоматизации ежедневных отчётов можно добавить:

Если не хотите писать скрипты, AI Reports может помочь: загрузите Excel с данными по продажам, система автоматически проанализирует данные, выявит тренды и подготовит готовый аналитический отчёт с выводами.

Заключение

Автоматизация отчётов по продажам экономит:

Начните с простого: экспорт из CRM → Google Sheets → Email. Потом расширяйте.

Правило: если вы делаете одно и то же каждый день, это нужно автоматизировать.

Готовы автоматизировать отчёты?
Загрузите Excel-файл и получите аналитический отчёт за 2 минуты. 1000 бесплатных тиков при регистрации.
Попробовать бесплатно