Внешние сервисы, Telegram и почта
Скрипт может обращаться к внешним API, отправлять сообщения в Telegram и письма на почту.
HTTP-запросы
const response = Http.fetch("https://api.example.com/orders", {
method: "GET",
query: { since: "2026-10-01" },
headers: { Authorization: "Bearer " + Secrets.get("SHOP_TOKEN") },
timeout: 10000,
});
if (!response.ok) throw new Error("Сервис ответил с кодом " + response.status);
const orders = response.json();
Параметры Http.fetch(url, options):
| Параметр | Что задаёт |
|---|---|
method | GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS; без тела по умолчанию GET, с телом POST |
headers | заголовки запроса |
query | объект, который добавится к адресу как параметры |
body | строка или объект; объект отправляется как JSON |
timeout | ожидание ответа в миллисекундах, не больше 15 секунд |
redirect | "follow" (по умолчанию) или "manual" — не переходить по перенаправлению, а вернуть его |
Короткие формы: Http.get(url, options) и Http.post(url, body, options).
Ответ:
| Поле или метод | Что возвращает |
|---|---|
response.status | код ответа |
response.ok | true для кодов 200–299 |
response.json() | ответ, разобранный из JSON |
response.text() | ответ текстом |
response.header("Content-Type") | заголовок ответа |
Ограничения и защита:
- до 50 внешних запросов за запуск (вместе с
Telegram.send); - ответ до 2 МБ, ожидание до 15 секунд;
- адреса внутренних сетей недоступны;
- при перенаправлении на другой адрес передаются только стандартные заголовки, а ключи в ваших заголовках (например
X-Api-Key) остаются у первого сервиса; переход сhttpsнаhttpне выполняется.
Ключи и токены храните в Секретах, а не в коде.
Пример: загрузить CSV
Utilities.parseCsv возвращает все ячейки текстом, поэтому числа и даты нужно преобразовать перед записью.
function main() {
const text = Http.fetch("https://example.com/orders.csv").text();
const rows = Utilities.parseCsv(text).slice(1).map((row) => [row[0], Utilities.toDate(row[1]), Number(row[2])]);
Coverse.table.getSheet("Заказы").appendRows(rows);
}
Telegram
Сообщения отправляет ваш бот:
- Создайте бота у @BotFather и получите токен.
- Сохраните токен в секрет
TELEGRAM_BOT_TOKENна вкладке «Секреты». - Напишите боту из нужного чата хотя бы одно сообщение: бот не может первым написать человеку.
- Узнайте идентификатор чата (например, у бота @userinfobot) или используйте имя канала вида
"@channel", если бот добавлен в канал.
Telegram.send(123456789, "Отчёт готов");
Telegram.send(123456789, "<b>Итог:</b> 12 заказов", { parseMode: "HTML" });
Telegram.send("@sales_channel", "Новый заказ", { silent: true, disablePreview: true });
Telegram.send(123456789, "Сообщение от другого бота", { secret: "SALES_BOT" });
| Параметр | Что делает |
|---|---|
parseMode | разметка: "HTML", "Markdown" или "MarkdownV2" |
silent: true | без звукового уведомления |
disablePreview: true | без предпросмотра ссылок |
secret | взять токен из секрета с другим названием |
Уведомления об изменениях таблицы можно получать в Telegram и без скрипта, через подписки API: Уведомления в Telegram на портале API.
Почта
Mail.send("anna@example.com", "Отчёт за день", "Заказов сегодня: 12");
Mail.send(["anna@example.com", "ivan@example.com"], "Отчёт", "", {
htmlBody: "<p>Итог за день: <b>12 заказов</b></p>",
replyTo: "sales@example.com",
});
console.log("Ещё можно отправить:", Mail.remaining());
- Письмо уходит от имени того, кто последним менял код скрипта, с пометкой «через Coverse». Ответ получателя придёт на его почту, если не задан
replyTo. - В одном письме до 10 адресатов; адресаты видят адреса друг друга.
- За сутки — не больше 10 адресатов на все скрипты владельца таблицы. Каждый адресат письма учитывается отдельно.
- В
htmlBodyсохраняются абзацы, жирный шрифт, курсив, ссылки, списки и таблицы; картинки, стили и остальная разметка вырезаются. - Письма отправляются после завершения запуска, в том числе если запуск закончился ошибкой: уходят письма, поставленные до ошибки.
Mail.sendвозвращает число адресатов. - Если на письмо не хватает суточного остатка,
Mail.sendвыдаёт ошибку.
Почта в скриптах рассчитана на уведомления себе и коллегам, а не на рассылки клиентам.
Что дальше
- ИИ в скриптах
- Вебхуки: приём запросов из внешних сервисов.
- Готовые сценарии
- Бот Telegram записывает в таблицу: приём сообщений от пользователей.
- Выгрузка из сервисов по расписанию: amoCRM и Битрикс24, Wildberries и Ozon, МойСклад, 1С.