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

Секреты: ключи и токены в скриптах

Секреты — защищённое хранилище токенов, API-ключей и паролей скрипта. Значение секрета не пишется в код, его не видно в интерфейсе после сохранения, а в журнале запусков оно заменяется на ***.

Добавить секрет​

  1. В редакторе скрипта откройте вкладку «Секреты».
  2. Нажмите «Добавить секрет».
  3. Укажите название (латинские буквы, цифры и знак подчёркивания, например SHOP_TOKEN) и значение.

После сохранения значение шифруется. Посмотреть его снова нельзя, только заменить кнопкой «Изменить значение».

Кнопка «Вставить в код» добавляет в редактор обращение к секрету.

Вкладка «Секреты»: секрет и команда для вставки в код

Использовать в коде​

function main() {
const token = Secrets.get("SHOP_TOKEN");
if (!token) throw new Error("Добавьте секрет SHOP_TOKEN на вкладке «Секреты»");

const response = Http.fetch("https://shop.example/api/orders", {
headers: { Authorization: "Bearer " + token },
});
console.log(response.status);
}
  • Secrets.get("НАЗВАНИЕ") возвращает значение или null, если секрета нет;
  • Secrets.has("НАЗВАНИЕ") проверяет, задан ли секрет.

Telegram.send сам берёт токен бота из секрета TELEGRAM_BOT_TOKEN, см. Внешние сервисы, Telegram и почта.

Если ключ оказался в коде​

Если в коде встретится значение, похожее на токен или пароль, редактор подсветит строку и предложит «Перенести в Секреты»: значение сохранится как секрет, а в коде останется Secrets.get("НАЗВАНИЕ").

Когда секреты не передаются в запуск​

Секреты принадлежат владельцу скрипта. Чтобы участник с правом редактирования не мог дописать код и вывести ключи владельца, действуют правила:

  • Код менял не владелец. Если код скрипта или подключённой библиотеки последним менял другой участник, секреты в запуск не передаются, пока владелец не проверит и не подтвердит код. Подтвердить можно, сохранив код самому или кнопкой «Подтвердить код».
  • Значение секрета менял не владелец. Такой секрет не передаётся, пока владелец не сохранит его значение заново.

В обоих случаях Secrets.get возвращает null, а первая строка журнала запуска объясняет причину.

Ограничения​

  • до 20 секретов на скрипт;
  • значение до 4096 байт (около 4000 латинских символов или 2000 русских);
  • секреты принадлежат одному скрипту; другой скрипт той же таблицы их не видит.

Подробнее о правах скриптов в статье Права и безопасность.