Подписывайтесь:

Блог AST-SoftPro

Google Таблицы как CRM: автоматизация через gspread

19.06.2026 7 мин чтения
Google Таблицы как CRM: автоматизация через gspread

Google Таблицы как CRM

Google Таблицы — это не просто spreadsheet. При правильной структуре и автоматизации через Python они становятся полноценной CRM-системой: хранение клиентов, трекинг сделок, автоматические уведомления и отчёты.

Библиотека gspread позволяет управлять таблицами программно: читать данные, добавлять строки, обновлять ячейки, форматировать столбцы.

Установка и авторизация

pip install gspread google-auth

Для авторизации нужен сервисный аккаунт Google:

  1. Создать проект в Google Cloud Console

  2. Включить Google Sheets API

  3. Создать сервисный аккаунт и скачать JSON-ключ

  4. Поделиться таблицей с email сервисного аккаунта

import gspread
from google.oauth2.service_account import Credentials

SCOPES = [
    'https://www.googleapis.com/auth/spreadsheets',
    'https://www.googleapis.com/auth/drive',
]

creds = Credentials.from_service_account_file(
    'service-account.json', scopes=SCOPES
)
gc = gspread.authorize(creds)

# Открытие таблицы
spreadsheet = gc.open('CRM - КЛИЕНТЫ')
worksheet = spreadsheet.sheet1

Структура CRM-таблицы

Рекомендуемая структура:

A: ID B: Имя C: Компания D: Email E: Телефон F: Статус G: Сумма H: Дата
1 Иван Петров ООО "Техно" ivan@techno.ru +79991234567 Новая 150000 2026-06-15
def add_client(name, company, email, phone, amount=0):
    """Добавление нового клиента в CRM."""
    from datetime import datetime

    # Проверка дубликата по email
    existing = worksheet.col_values(4)  # Столбец D (email)
    if email in existing:
        print(f"⚠️ Клиент {email} уже существует")
        return False

    row_num = len(worksheet.col_values(1)) + 1
    worksheet.update(f'A{row_num}:H{row_num}', [[
        row_num - 1,
        name,
        company,
        email,
        phone,
        'Новая',
        amount,
        datetime.now().strftime('%Y-%m-%d')
    ]])
    print(f"✅ Клиент добавлен: {name} ({company})")
    return True

def update_status(email, new_status):
    """Обновление статуса сделки."""
    emails = worksheet.col_values(4)
    if email in emails:
        row_num = emails.index(email) + 1
        worksheet.update(f'F{row_num}', [[new_status]])
        print(f"✅ Статус обновлён: {email}{new_status}")
    else:
        print(f"❌ Клиент не найден: {email}")

# Примеры использования
# add_client('Анна Сидорова', 'IP Сидорова', 'anna@sidorova.ru', '+79991112233', 80000)
# update_status('anna@sidorova.ru', 'В работе')

Автоматические отчёты

def generate_report():
    """Генерация отчёта по CRM."""
    data = worksheet.get_all_values()
    headers = data[0]
    rows = data[1:]

    # Статистика по статусам
    statuses = {}
    total_amount = 0
    for row in rows:
        if len(row) >= 7:
            status = row[5]  # Столбец F
            amount = int(row[6]) if row[6] else 0
            statuses[status] = statuses.get(status, 0) + 1
            total_amount += amount

    report = "📊 ОТЧЁТ ПО CRM\n\n"
    report += f"Всего клиентов: {len(rows)}\n"
    report += f"Общая сумма: {total_amount:,} руб.\n\n"
    report += "По статусам:\n"
    for status, count in statuses.items():
        report += f"  {status}: {count}\n"

    return report

# Отправка отчёта в Telegram
def send_report_to_telegram():
    import requests
    report = generate_report()
    bot_token = "YOUR_BOT_TOKEN"
    chat_id = "YOUR_CHAT_ID"
    url = f"https://api.telegram.org/bot{bot_token}/sendMessage"
    requests.post(url, json={'chat_id': chat_id, 'text': report})

Интеграция с Telegram-ботом

from aiogram import Bot, Dispatcher, types
from aiogram.filters import Command
import os

bot = Bot(token=os.getenv('BOT_TOKEN'))
dp = Dispatcher()

@dp.message(Command('client'))
async def add_client_from_bot(message: types.Message):
    """Добавление клиента из Telegram."""
    parts = message.text.split()
    if len(parts) < 3:
        await message.answer('Формат: /client Имя Email')
        return

    name = parts[1]
    email = parts[2]
    company = parts[3] if len(parts) > 3 else ''

    success = add_client(name, company, email, '', 0)
    if success:
        await message.answer(f"✅ Клиент {name} добавлен в CRM")
    else:
        await message.answer(f"⚠️ Клиент {email} уже существует")

@dp.message(Command('status'))
async def change_status(message: types.Message):
    """Изменение статуса из Telegram."""
    parts = message.text.split()
    if len(parts) < 3:
        await message.answer('Формат: /status Email Статус')
        return

    email = parts[1]
    status = ' '.join(parts[2:])
    update_status(email, status)
    await message.answer(f"✅ Статус обновлён: {status}")

async def main():
    await dp.start_polling(bot)

if __name__ == '__main__':
    import asyncio
    asyncio.run(main())

Сравнение Google Таблиц и CRM-систем

Критерий Google Таблицы Специализированная CRM
Стоимость Бесплатно От $10/пользователь/мес
Настройка Python-скрипты Встроенные инструменты
Интеграции gspread, Apps Script API, вебхуки
Масштабируемость До 100K строк Неограниченно
Командная работа Совместное редактирование Роли и права

Google Таблицы идеально подходят для малого бизнеса (до 500 клиентов). Когда база растёт — переходите на специализированную CRM.

Заключение

Google Таблицы + gspread — это быстрая альтернатива CRM для малого бизнеса. Ключевые возможности:

  • Добавление клиентов и обновление статусов через Python;

  • Интеграция с Telegram-ботом для удалённого управления;

  • Автоматические отчёты и уведомления;

  • Совместная работа команды в реальном времени.

Начните с простой таблицы, автоматизируйте рутину, масштабируйте по мере роста.


AI-Помощник