Skip to content

sikuykus-lab/google-sheets-scripts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Google Apps Script — автоматизация таблиц

Короче: логика внутри Google Таблиц — рассылки, KPI-письма, бот из листа, без своего сервера.

Задача: сроки сдвигаются, KPI не сходится с планом, мероприятия надо напоминать — а править должен тот, кто ведёт лист, не разработчик. Скрипты живут в проекте таблицы; наружу уходят только Gmail и Telegram, где это нужно.


Что сделано

  • Рассылка по срокам — правила по типам объектов, чанки писем, тестовый режим.
  • Два контура — обёртки с разными флагами, один движок dispatch.gs.
  • KPI-рассылка — расхождения с внешним планом, HTML-таблица в письме.
  • Бот мероприятий — строки таблицы → напоминания в Telegram, модерация доступа.
  • ImportRangeRetry — повтор импорта, если Google отдал ошибку.
  • Snapshot книги — копия нужных вкладок на Drive по whitelist.

Фишки и удобство

Фишка Зачем
Меню в таблице Запуск без редактора скриптов
Тестовый флаг рассылки Прогон на свои адреса до «боя»
Чанки писем Не упираемся в лимиты Gmail
Именованный диапазон получателей KPI — без хардкода email в коде
active / галочка «отправить» Строка в данных, не в скрипте
Webhook + time-driven Бот отвечает и шлёт по календарю

Плюс: нет VPS под бизнес-логику таблицы — квоты и права те же, что у Google Workspace.


Схема данных

flowchart TB
  subgraph sheets ["Листы таблицы"]
    R["Правила рассылки"]
    C["Изменения сроков"]
    K["KPI / внешний план"]
    E["Мероприятия"]
    S["Подписчики"]
  end

  subgraph gas ["Apps Script"]
    D["dispatch.gs"]
    M["milestone_mail.gs"]
    B["event_reminder_bot.gs"]
    I["import_range_retry.gs"]
    W["workbook_snapshot.gs"]
  end

  R --> D
  C --> D
  D --> GMAIL["Gmail"]
  K --> M
  M --> GMAIL
  E --> B
  S --> B
  B --> TG["Telegram API"]
  I --> sheets
  W --> DRIVE["Google Drive"]
Loading

Идея: таблица — источник правды; скрипт только читает, форматирует и шлёт.


Процесс пользователя

flowchart LR
  A["Обновили сроки\nна листе"] --> B{"Рассылка\nпо расписанию?"}
  B -->|да| C["Письмо с таблицей\nв Gmail"]
  B -->|KPI| D["milestone_mail\n→ письмо"]
  E["Строка мероприятия"] --> F["Напоминание\nв Telegram"]
  C --> G["Получатель\nкликает / читает"]
  F --> G
Loading

Администратор / редактор:

flowchart TD
  R1["Правка листа\nили правил"] --> R2["Меню → запуск\nили триггер"]
  R2 --> R3["Executions\nв Apps Script"]
  R3 --> R4["При ошибке —\nлог + тестовый режим"]
Loading

Стек

Слой Технология
Данные Google Sheets
Логика Google Apps Script
Почта GmailApp
Бот UrlFetchApp → Telegram API
Триггеры time-driven, меню, web app doPost

Структура репозитория

README.md
LICENSE
.gitignore
apps-script/              — dispatch.gs, milestone_mail.gs, …
docs/                     — DATA-SCHEMA.md, DESIGN-EDGE-CASES.md, DIAGRAMS.md
examples/                 — script_properties.example.json

Быстрый старт

  1. Открыть проект Apps Script таблицы.
  2. Вставить .gs из репозитория (плейсхолдеры YOUR_* вместо токенов и ID).
  3. Рассылка: настроить триггер или пункт меню.
  4. Бот мероприятий: Deploy → Web app → первичная настройка webhook.

Секреты — только вне git (локальный config или Properties Service).

About

Google Apps Script: рассылки, KPI, бот мероприятий из таблицы

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors