IT instruction for corporate setup
This commit is contained in:
parent
ac2246a784
commit
55905e16ed
212
IT-INSTRUCTION.md
Normal file
212
IT-INSTRUCTION.md
Normal file
@ -0,0 +1,212 @@
|
|||||||
|
# Инструкция для IT-отдела: Настройка системы сбора данных ЕППК
|
||||||
|
|
||||||
|
## Цель
|
||||||
|
Автоматизация сбора данных Единого плана повышения квалификации (ЕППК) и отчётов по бюджету обучений с филиалов Казахтелеком.
|
||||||
|
|
||||||
|
## Требования
|
||||||
|
|
||||||
|
### Google Workspace
|
||||||
|
- Корпоративный аккаунт Google Workspace
|
||||||
|
- Доступ к созданию форм и таблиц
|
||||||
|
- Доступ к Google Apps Script
|
||||||
|
|
||||||
|
### Пользователи
|
||||||
|
- 21 филиал + Центральный аппарат
|
||||||
|
- Каждый филиал заполняет форму через корпоративный email
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Шаг 1: Создание Google Формы
|
||||||
|
|
||||||
|
### Структура формы
|
||||||
|
|
||||||
|
**Название:** Сбор данных ЕППК — Казахтелеком
|
||||||
|
|
||||||
|
**Поля формы:**
|
||||||
|
|
||||||
|
| Поле | Тип | Обязательное | Варианты |
|
||||||
|
|------|-----|--------------|----------|
|
||||||
|
| Филиал | Выпадающий список | Да | Список филиалов (см. ниже) |
|
||||||
|
| Тип отчёта | Выпадающий список | Да | Бюджет (ежемесячно) / ЕППК (годовой) |
|
||||||
|
| Период | Выпадающий список | Да | Январь, Февраль, Март, ..., Декабрь |
|
||||||
|
| Год | Выпадающий список | Да | 2025, 2026 |
|
||||||
|
| Бюджет обучений (тенге) | Число | Да | - |
|
||||||
|
| Бюджет командировок (тенге) | Число | Да | - |
|
||||||
|
| Запланировано обучений | Число | Нет | - |
|
||||||
|
| Прошло обучений | Число | Нет | - |
|
||||||
|
| Комментарий | Текст | Нет | - |
|
||||||
|
|
||||||
|
### Список филиалов для выпадающего списка
|
||||||
|
|
||||||
|
```
|
||||||
|
Астана
|
||||||
|
Алматы
|
||||||
|
Шымкент
|
||||||
|
Атырау
|
||||||
|
Актобе
|
||||||
|
Караганда
|
||||||
|
Павлодар
|
||||||
|
Петропавловск
|
||||||
|
Костанай
|
||||||
|
Туркестан
|
||||||
|
Усть-Каменогорск
|
||||||
|
Уральск
|
||||||
|
Семей
|
||||||
|
Кызылорда
|
||||||
|
Тараз
|
||||||
|
Жезказган
|
||||||
|
Экибастуз
|
||||||
|
Темиртау
|
||||||
|
Балхаш
|
||||||
|
Турксиб
|
||||||
|
ЦА (Центральный аппарат)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Настройки формы
|
||||||
|
|
||||||
|
1. **Ограничение доступа:** Только сотрудники корпоративного аккаунта
|
||||||
|
2. **Сбор email:** Включить автоматический сбор email заполнителя
|
||||||
|
3. **Одна отправка на email:** Запретить повторные отправки (опционально)
|
||||||
|
4. **Показывать.progress bar:** Включить
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Шаг 2: Настройка Google Таблицы
|
||||||
|
|
||||||
|
### Автоматическое создание таблицы
|
||||||
|
При создании формы нажмите "Создать таблицу" — данные будут поступать автоматически.
|
||||||
|
|
||||||
|
### Дополнительные колонки (формулы)
|
||||||
|
|
||||||
|
Добавьте в таблицу вычисляемые колонки:
|
||||||
|
|
||||||
|
| Колонка | Формула | Описание |
|
||||||
|
|---------|---------|----------|
|
||||||
|
| Статус | `=IF(E2>0,"Сдано","Ожидает")` | Автоматический статус |
|
||||||
|
| % выполнения | `=IF(D2>0,E2/D2*100,0)` | Процент выполнения плана |
|
||||||
|
| Разница бюджета | `=F2-G2` | Разница между обучением и командировками |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Шаг 3: Настройка автоматических напоминаний
|
||||||
|
|
||||||
|
### Google Apps Script для напоминаний
|
||||||
|
|
||||||
|
Создайте новый скрипт: **Расширения → Apps Script**
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// Конфигурация
|
||||||
|
const SHEET_NAME = "Ответы формы";
|
||||||
|
const EMAIL_COLUMN = 2; // Столбец с email (B)
|
||||||
|
const STATUS_COLUMN = 10; // Столбец со статусом (J)
|
||||||
|
const DEADLINE_DAY = 25; // День дедлайна (25-е число)
|
||||||
|
|
||||||
|
function sendReminders() {
|
||||||
|
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME);
|
||||||
|
const data = sheet.getDataRange().getValues();
|
||||||
|
const today = new Date();
|
||||||
|
const currentDay = today.getDate();
|
||||||
|
|
||||||
|
// Проверяем, не наступил ли дедлайн (25-е число)
|
||||||
|
if (currentDay < DEADLINE_DAY) {
|
||||||
|
Logger.log("Дедлайн ещё не наступил. Текущий день: " + currentDay);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Собираем email филиалов, которые ещё не сдали
|
||||||
|
const pendingEmails = [];
|
||||||
|
for (let i = 1; i < data.length; i++) {
|
||||||
|
const email = data[i][EMAIL_COLUMN - 1];
|
||||||
|
const status = data[i][STATUS_COLUMN - 1];
|
||||||
|
if (email && status !== "Сдано") {
|
||||||
|
pendingEmails.push(email);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pendingEmails.length === 0) {
|
||||||
|
Logger.log("Все филиалы сдали отчёт!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Формируем письмо
|
||||||
|
const subject = "Напоминание: сдача отчёта по ЕППК";
|
||||||
|
const body = `
|
||||||
|
Уважаемые коллеги!
|
||||||
|
|
||||||
|
Напоминаем о необходимости сдачи ежемесячного отчёта по бюджету обучений и командировочных расходов.
|
||||||
|
|
||||||
|
Дедлайн: 25-е число текущего месяца.
|
||||||
|
|
||||||
|
Пожалуйста, заполните форму:
|
||||||
|
[ВСТАВЬТЕ ССЫЛКУ НА ФОРМУ]
|
||||||
|
|
||||||
|
С уважением,
|
||||||
|
Центральный аппарат Казахтелеком
|
||||||
|
`;
|
||||||
|
|
||||||
|
// Отправляем каждому филиалу
|
||||||
|
pendingEmails.forEach(email => {
|
||||||
|
GmailApp.sendEmail(email, subject, body);
|
||||||
|
Logger.log("Отправлено: " + email);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Или отправляем одним письмом BCC
|
||||||
|
// GmailApp.sendEmail("", subject, body, {bcc: pendingEmails.join(",")});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Автоматический запуск каждый месяц 25-го числа
|
||||||
|
function createMonthlyTrigger() {
|
||||||
|
ScriptApp.newTrigger("sendReminders")
|
||||||
|
.timeBased()
|
||||||
|
.onMonthDay(DEADLINE_DAY)
|
||||||
|
.atHour(10) // 10:00 утра
|
||||||
|
.create();
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Настройка триггера
|
||||||
|
|
||||||
|
1. Запустите функцию `createMonthlyTrigger()` один раз
|
||||||
|
2. Скрипт будет автоматически отправлять напоминания 25-го числа каждого месяца в 10:00
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Шаг 4: Настройка доступа
|
||||||
|
|
||||||
|
### Кто может заполнять форму
|
||||||
|
- Настройте форму: **Настройки → Ограничения → Только сотрудники [ваша_организация].com**
|
||||||
|
|
||||||
|
### Кто может просматривать таблицу
|
||||||
|
- Настройте общий доступ к Google Таблице
|
||||||
|
- Роль: "Просмотр" для филиалов, "Редактор" для вас и IT
|
||||||
|
|
||||||
|
### Кто может редактировать скрипт
|
||||||
|
- Только IT-отдел и вы
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Шаг 5: Тестирование
|
||||||
|
|
||||||
|
1. Создайте тестовую форму с ограничением доступа
|
||||||
|
2. Отправьте тестовые данные
|
||||||
|
3. Проверьте, что данные поступают в таблицу
|
||||||
|
4. Проверьте отправку напоминаний вручную
|
||||||
|
5. Настройте автоматический триггер
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Контакты
|
||||||
|
|
||||||
|
При вопросах обращайтесь к [ваше имя] — [ваш email]
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Дополнительные опции
|
||||||
|
|
||||||
|
### Если нет Google Workspace
|
||||||
|
- **Microsoft Forms + Power Automate** — аналогичная функциональность
|
||||||
|
- **Яндекс.Формы** — если используете Яндекс.Корпоративный портал
|
||||||
|
|
||||||
|
### Если нужна более сложная система
|
||||||
|
- **Airtable** — база данных с формами и автоматизациями
|
||||||
|
- **Notion** — база данных + формы + шаблоны отчётов
|
||||||
Loading…
Reference in New Issue
Block a user