Skip to content

googlesheets-ru/google_sheets_pro-chat-sheet-master

Repository files navigation

Мастер-скрипт для управления Таблицами чата

Этот репозиторий содержит код для Google Apps Script, который автоматизирует управление и обслуживание набора Google Таблиц, используемых сообществом чата @google_sheets_pro.

Сам скрипт развернут как проект Скрипты Таблицы чата t.me/google_sheets_pro [master].

Основные возможности

  • Ежемесячное создание новой таблицы: Автоматически создает копию текущей таблицы, сбрасывает ее до начального состояния и обновляет соответствующие настройки.
  • Очистка от Google Forms: Автоматически отвязывает и удаляет все Google Формы, связанные с листами, при создании новой таблицы.
  • Веб-сервис (REST API): Предоставляет простой REST API для получения ID текущей активной таблицы. Это позволяет другим скриптам и сервисам интегрироваться с системой.
  • Управление содержанием: Динамически генерирует и обновляет оглавление на главной странице таблицы.
  • Сортировка листов: Организует листы в определенном порядке: сначала закрепленные (из списка исключений), затем защищенные, и в конце все остальные.
  • Гибкая настройка: Все основные параметры, такие как ID папок, списки исключений и права доступа, хранятся в настройках скрипта (Script Properties).
  • Пользовательские функции: Предоставляет кастомные функции, которые можно вызывать из редактора Скриптов для выполнения различных административных задач.
  • Автоматические триггеры: Использует триггеры для выполнения задач по расписанию (ежемесячно, ежечасно).
  • Использование как библиотеки: Основной функционал инкапсулирован в классе App и может быть подключен как библиотека в других проектах Google Apps Script.

Структура проекта

  • src/App/index.js: Основной класс App, содержащий всю бизнес-логику.
  • src/App/types.js: Определения типов JSDoc для улучшения читаемости кода.
  • src/Triggers/index.js: Функции, предназначенные для запуска по триггерам (например, triggerUpdateEveryMonth).
  • src/Custom/index.js: Пользовательские функции, доступные редактора Скриптов (например, userActionGenerateTOC).
  • src/Tests/: Тестовые функции для проверки работоспособности отдельных частей кода.
  • appsscript.json: Манифест проекта, определяющий зависимости и настройки.
  • gulpfile.js, package.json: Файлы для сборки проекта с использованием gulp и clasp.

Ключевые функции

doGet(e) / doPost(e)

Реализует веб-сервис, который отвечает на GET и POST запросы. Основное назначение - вернуть ID текущей активной таблицы чата по запросу от другого сервиса. Для аутентификации используется ADMIN_ACCESS_TOKEN.

App.createNextBook()

Создает новую таблицу для следующего месяца. Копирует текущую, отвязывает старые Google Формы, обновляет права доступа, сбрасывает содержимое, создает новый пустой лист и генерирует оглавление.

App.orderSheetsByProtections()

Сортирует листы. Листы из APP_LIST_OF_EXEPTIONS_SHEETS всегда идут первыми, затем листы с защитой от редактирования, затем все остальные.

App.generateTOC()

Создает или обновляет оглавление на листе "О Таблице". Собирает ссылки на все листы, кроме тех, что в списке исключений, и добавляет значок замка 🔏 для защищенных листов.

triggerUpdateEveryMonth()

Триггер, который раз в месяц запускает App.createNextBook().

triggerUpdateEveryHour()

Триггер ежечасного обновления Таблицы. Добавляет новый пустой лист, сортирует листы и обновляет оглавление.

triggerUpdateEveryMin()

Триггер ежеминутного обновления Таблицы. Используется для отмены.

Установка и настройка

  1. Клонируйте репозиторий.
  2. Установите зависимости: npm install
  3. Настройте clasp: Войдите в свой Google-аккаунт (clasp login) и создайте новый проект Apps Script (clasp create --title "Ваше название проекта" --rootDir ./build).
  4. Настройте свойства скрипта: В редакторе Apps Script (Файл -> Свойства проекта -> Свойства скрипта) добавьте следующие переменные:
    • APP_CURRENT_FILE_NUM: Номер последней созданной таблицы.
    • APP_CURRENT_ID: ID текущей активной таблицы.
    • APP_FOLDER_ID: ID папки на Google Диске, где хранятся все таблицы.
    • APP_LIST_OF_EXEPTIONS_SHEETS: JSON-массив в виде строки с именами листов, которые нужно исключить из некоторых операций (например, ["О Таблице"]).
    • APP_MASTER_EDITOR: Email-адрес главного редактора.
    • APP_EXPERTS_EDITOR: Email-адреса экспертов через запятую.
    • ADMIN_ACCESS_TOKEN: Секретный токен для доступа к API.
  5. Разверните проект: npm run dev

Использование

  • Автоматическое обновление: Триггеры будут выполняться автоматически согласно их расписанию.
  • Ручной запуск: Вы можете запускать пользовательские функции из src/Custom/index.js непосредственно из редактора Скриптов.

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •