Все заметки

Google Sheets как админка: когда дорогие CMS не нужны

Нужно было дать клиенту возможность обновлять контент. WordPress — overkill, Tilda — платно и медленно. Сделал админку на Google Sheets за час.

Контекст

Клубный сайт — нужно обновлять: новости, состав команды, расписание матчей, статистику. Админ клуба — не программист, но в Google Sheets уверенно работает уже 5 лет.

Привычный путь — WordPress. Но у него проблемы:

  • Нужен хостинг с PHP и MySQL (платно).
  • Обновления, плагины, уязвимости.
  • Клиент боится «что-то сломать».
  • Нет совместного редактирования в реальном времени.

Альтернатива

Google Sheets с ролью «редактор» для админа клуба + публичная ссылка для чтения через API. Astro на билде тянет данные и разливает их по страницам.

Как это устроено технически

1. Таблица

Создаёшь Google-таблицу с вкладками: news, matches, squad, partners. Первая строка — заголовки колонок. Делаешь «Поделиться → Любой с ссылкой → Просмотр».

2. Скрипт сборки

В src/content/data.ts:

const SHEET_ID = 'ваш-id-таблицы';
const RANGE = 'news!A2:E100';
const url = `https://docs.google.com/spreadsheets/d/${SHEET_ID}/gviz/tq?range=${RANGE}&tqx=out:json`;

const raw = await fetch(url).then(r => r.text());
const json = JSON.parse(raw.slice(47, -2)); // gviz wraps in `google.visualization(…)`

Astro компонент читает json.table.rows и рендерит карточки.

3. Автодеплой

GitHub Actions cron каждые 15 минут: npm run build + деплой на Pages. Админ правит таблицу — через четверть часа новое уже на сайте.

Плюсы

  • Стоимость: 0 ₽. Google-аккаунт уже есть у всех.
  • Совместная работа. Два человека пишут одновременно в разные ячейки — без конфликтов.
  • Ничего не ломается. Нет БД, нет плагинов, нет PHP-версий.
  • Привычный UX. Excel-интерфейс — не надо никого учить.
  • Бэкап бесплатно. Google хранит 30 дней истории изменений.

Минусы

  • Нет предпросмотра «как будет». Текст пишется в ячейке, отрисовка — на сайте.
  • Нет богатого редактора. Жирный/курсив, списки — только через Markdown-строку.
  • Не для блогов. 2 000 символов на ячейку, для лонгридов узко.

Когда применять

  • Новости, анонсы, короткие обновления — идеально.
  • Состав команды, каталог партнёров, прайс — идеально.
  • Лонгриды с картинками — нет, используйте MDX в git-репозитории.
  • Формы с генерацией PDF — нет, берите Airtable или Notion.

Для 80 % задач малого бизнеса Google Sheets покрывает админку без дыр.