Перейти к основному содержимому

Даты, числа и утилиты

Объект Utilities собирает вспомогательные команды: работу с датами, форматирование, разбор CSV, кодирование и подписи.

Часовой пояс​

Даты в скриптах считаются в часовом поясе владельца скрипта из его профиля. Он доступен как Utilities.timezone.

Не используйте getDate() и getHours()

Стандартные 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), base64Decodebase64; 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, запуск отмечается как «Ошибка», а текст ошибки показывается в журнале.