Даты, числа и утилиты
Объект Utilities собирает вспомогательные команды: работу с датами, форматирование, разбор CSV, кодирование и подписи.
Часовой пояс
Даты в скриптах считаются в часовом поясе владельца скрипта из его профиля. Он доступен как Utilities.timezone.
Стандартные getDate(), getDay(), getHours(), setHours() и new Date(год, месяц, день) работают в часовом поясе сервера, а не владельца. Для дня, недели и сдвига дат используйте команды ниже.
Даты
const today = Utilities.today(); // начало сегодняшнего дня
const weekStart = Utilities.startOfWeek(); // понедельник текущей недели
const monthStart = Utilities.startOfMonth(); // первое число месяца
const nextWeek = Utilities.addDays(today, 7); // новая дата через 7 дней
const days = Utilities.daysBetween(weekStart, today); // разница в днях
const parts = Utilities.dateParts(today); // { year, month, day, hour, minute, second, weekday }
const isMonday = parts.weekday === 1; // 1 — понедельник, 7 — воскресенье
Превратить значение ячейки или текст в дату:
const due = Utilities.toDate(row[5]); // «05.10.2026», «05.10.2026 13:07», «2026-10-05» или дата из ячейки
if (due !== null && due < Utilities.today()) console.log("Срок прошёл");
Форматирование
Utilities.formatDate(new Date(), "dd.MM.yyyy HH:mm"); // 05.10.2026 13:07
Utilities.formatDate(new Date(), "d MMMM yyyy 'г.'"); // 5 октября 2026 г.
Utilities.formatDate(new Date(), "HH:mm", "Asia/Tokyo"); // другой часовой пояс
Utilities.parseDate("05.10.2026", "dd.MM.yyyy"); // текст в дату
Utilities.formatNumber(1234.5, { decimals: 2 }); // 1 234,50
Utilities.formatNumber(1234.5, { currency: "RUB" }); // 1 234,50 ₽
Utilities.formatString("Заказ %s на %.2f ₽", "A-1", 1234.5);
Обозначения шаблона дат: yyyy, MM, dd, HH, mm, ss, MMMM (октября), LLLL (октябрь), EEEE (понедельник). Регистр важен: DD и YYYY не сработают. Латинский текст внутри шаблона берите в одинарные кавычки.
CSV
const rows = Utilities.parseCsv(Http.fetch("https://example.com/orders.csv").text());
Разделитель (запятая, точка с запятой или табуляция) определяется сам или задаётся вторым параметром. Все ячейки возвращаются текстом: числа преобразуйте через Number, даты через Utilities.toDate.
Кодирование и подписи
| Команда | Что делает |
|---|---|
Utilities.base64Encode(text), base64Decode | base64; base64EncodeWebSafe, base64DecodeWebSafe для адресов |
Utilities.hash("sha256", text) | хеш: md5, sha1, sha256, sha384, sha512 |
Utilities.hmac("sha256", text, key) | подпись запроса ключом; результат в hex, четвёртым параметром "base64" или "base64url" |
Utilities.rsaSign("sha256", text, privateKey) | подпись закрытым ключом RSA (PEM, не длиннее 4096 бит), результат в base64 |
Utilities.uuid() | новый уникальный идентификатор |
Пример заголовка Basic-авторизации:
const auth = "Basic " + Utilities.base64Encode("логин:" + Secrets.get("PASSWORD"));
Пауза
Utilities.sleep(1000) приостанавливает выполнение на заданное число миллисекунд, не больше 10 секунд за вызов. Время паузы входит в 30 секунд запуска.
Журнал и ошибки
console.log("Обработано строк:", count);
console.warn("Пустая сумма в строке", row);
console.error("Сервис не ответил");
throw new Error("Нет листа «Заказы»"); // остановить скрипт с ошибкой
Вывод виден во вкладке «Журнал». Если скрипт остановлен throw, запуск отмечается как «Ошибка», а текст ошибки показывается в журнале.