Google Apps Script: основы за 15 минут с примерами
Инструкция

Google Apps Script: основы за 15 минут с примерами

Google Apps Script (GAS) — это язык программирования на базе JavaScript, который позволяет автоматизировать задачи в Google Workspace. В этом гайде разберём основы и создадим первый полезный скрипт.

Что такое Apps Script?

  • Язык: JavaScript (ES5 + некоторые ES6 фичи)
  • Среда: Облачная, запускается на серверах Google
  • Интеграции: Sheets, Docs, Gmail, Drive, Calendar, Forms

Как начать

Способ 1: Из Google Таблицы

  1. Откройте таблицу
  2. Расширения → Apps Script
  3. Откроется редактор кода

Способ 2: Отдельный проект

  1. Перейдите на script.google.com
  2. Новый проект

Базовые концепции

Работа с таблицей

// Получить активную таблицу
const ss = SpreadsheetApp.getActiveSpreadsheet();

// Получить лист
const sheet = ss.getSheetByName('Лист1');

// Получить значение ячейки
const value = sheet.getRange('A1').getValue();

// Записать значение
sheet.getRange('B1').setValue('Привет!');

// Получить диапазон данных
const data = sheet.getRange('A1:D10').getValues();
// data — это двумерный массив [[row1], [row2], ...]

Работа с Gmail

// Отправить письмо
GmailApp.sendEmail(
  'email@example.com',
  'Тема письма',
  'Текст письма'
);

// Получить непрочитанные
const threads = GmailApp.search('is:unread');
threads.forEach(thread => {
  const messages = thread.getMessages();
  messages.forEach(msg => {
    console.log(msg.getSubject());
  });
});

Работа с Drive

// Создать папку
const folder = DriveApp.createFolder('Новая папка');

// Найти файл по имени
const files = DriveApp.getFilesByName('Отчёт');
while (files.hasNext()) {
  const file = files.next();
  console.log(file.getUrl());
}

// Сохранить данные в файл
const content = 'Содержимое файла';
DriveApp.createFile('log.txt', content);

Триггеры

Триггеры запускают скрипты автоматически.

Типы триггеров

ТипКогда срабатывает
onOpenПри открытии таблицы
onEditПри изменении ячейки
onFormSubmitПри отправке формы
Time-drivenПо расписанию

Примеры

// Добавить меню при открытии
function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('Мои скрипты')
    .addItem('Отправить отчёт', 'sendReport')
    .addToUi();
}

// Реакция на изменение
function onEdit(e) {
  const range = e.range;
  const value = e.value;

  if (range.getColumn() === 1 && value === 'Готово') {
    range.setBackground('green');
  }
}

Установка триггера по времени

function createTrigger() {
  ScriptApp.newTrigger('dailyTask')
    .timeBased()
    .atHour(9)
    .everyDays(1)
    .create();
}

function dailyTask() {
  console.log('Выполняется каждый день в 9 утра');
}

Практический пример: Автоотчёт

Скрипт отправляет ежедневный отчёт по email.

function sendDailyReport() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('Данные');

  // Получаем данные за сегодня
  const today = new Date().toDateString();
  const data = sheet.getDataRange().getValues();

  const todayRows = data.filter(row => {
    const rowDate = new Date(row[0]).toDateString();
    return rowDate === today;
  });

  // Формируем отчёт
  const total = todayRows.reduce((sum, row) => sum + row[2], 0);

  const report = `
Отчёт за ${today}

Записей: ${todayRows.length}
Сумма: ${total}

Детали:
${todayRows.map(r => `• ${r[1]}: ${r[2]}`).join('\n')}
  `;

  // Отправляем
  GmailApp.sendEmail(
    'boss@company.com',
    'Ежедневный отчёт',
    report
  );
}

Ограничения

ЛимитЗначение
Время выполнения6 минут
Записей в таблицу2 млн ячеек
Email в день100 (бесплатно)
UrlFetch запросы20,000/день

Лучшие практики

  1. Логирование: Используйте console.log() для отладки
  2. Обработка ошибок: try-catch для критичных операций
  3. Кэширование: PropertiesService для хранения настроек
  4. Тестирование: Проверяйте на копии данных

Следующие шаги

Читайте также

Нужна помощь?

Разработаем автоматизацию под ваши задачи. Напишите в Telegram.

Не хотите разбираться сами?

Если читали статью и поняли, что руками уже не справляетесь — напишите. Оценим задачу бесплатно и предложим решение.

КМ
Константин
Менеджер проектов · ответит в течение часа

Как автоматизация окупается → Чеклист: 7 процессов для автоматизации →

Google Products Expert в команде
4 000+ участников сообщества

Нужна помощь с автоматизацией?

Разработаем решение под ваши задачи — от скрипта до полноценной интеграции.

Написать в Telegram

Подписывайтесь — делимся скриптами, кейсами и лайфхаками