Интеграции

AI в Google Таблицах через AI Gateway: функция =AI() на Apps Script

Как добавить в Google Таблицы формулу =AI(): скрипт Apps Script вызывает OpenAI-совместимый API AI Gateway, ключ хранится в свойствах скрипта. Массовая обработка ячеек прямо в таблице.

2 минуты чтения

В Google Таблицах можно завести собственную формулу =AI("…"), которая обращается к модели и возвращает ответ прямо в ячейку. Делается это через Apps Script — встроенный скриптовый движок Google. Так удобно массово переводить, классифицировать, суммировать или размечать данные строками таблицы. Модели берём из каталога AI Gateway.

Подготовка

Нужен ключ AI Gateway sk-aigate-… и базовый URL https://ai-gatewey.ru/v1. Ключ храним не в коде, а в свойствах скрипта (Script Properties) — они не видны тем, у кого есть доступ только к таблице.

Реализация

  1. Откройте редактор Apps Script

    В таблице меню Расширения → Apps Script. Откроется редактор, привязанный к этому документу, — весь код ниже вставляем туда.

  2. Сохраните ключ в свойствах скрипта

    Запустите один раз функцию-установщик (или задайте свойство вручную в настройках проекта) — ключ окажется в защищённом хранилище, а не в тексте формулы:

    function setup() {
      PropertiesService.getScriptProperties()
        .setProperty('AIGATE_API_KEY', 'sk-aigate-ваш_ключ');
    }
  3. Функция =AI()

    Пользовательская функция шлёт промпт на AI Gateway через UrlFetchApp и возвращает текст ответа — его можно вызывать как обычную формулу:

    /**
     * Запрос к модели AI Gateway.
     * @param {string} prompt Текст запроса.
     * @param {string} model  Код модели (необязательно).
     * @return Ответ модели.
     * @customfunction
     */
    function AI(prompt, model) {
      var key = PropertiesService.getScriptProperties().getProperty('AIGATE_API_KEY');
      var res = UrlFetchApp.fetch('https://ai-gatewey.ru/v1/chat/completions', {
        method: 'post',
        contentType: 'application/json',
        headers: { Authorization: 'Bearer ' + key },
        payload: JSON.stringify({
          model: model || 'deepseek/deepseek-chat',
          messages: [{ role: 'user', content: prompt }],
        }),
      });
      var data = JSON.parse(res.getContentText());
      return data.choices[0].message.content;
    }
  4. Используйте формулу в ячейках

    Теперь =AI() работает как встроенная функция и ссылается на другие ячейки — например, перевод из столбца A:

    =AI("Переведи на английский: " & A2)
Ключ AI Gateway храните в свойствах скрипта (Script Properties), а не в тексте функции или в ячейке — иначе он станет виден каждому, у кого есть доступ к таблице. При массовом протягивании формулы вниз таблица шлёт много запросов: держите ключу месячную квоту и RPM-лимит, чтобы контролировать расход.

Какие модели подойдут

Обработка строк таблицы — это множество однотипных запросов, поэтому берут быструю недорогую модель:

МодельВвод, ₽/1МВывод, ₽/1МКонтекст
DeepSeek: DeepSeek V331125128K
OpenAI: GPT-5.4 Mini118705400K
Anthropic Claude Haiku Latest157784200K
Актуальные цены каталога AI Gateway за 1 млн токенов. Все модели →

Частые вопросы

Почему формула иногда показывает ошибку лимита?

При протягивании на сотни строк таблица шлёт запросы пачками и упирается в квоту или RPM-лимит ключа (429) либо в собственные ограничения Apps Script на вызовы UrlFetchApp. Обрабатывайте данные частями и поднимите лимит ключа при необходимости.

Пересчитывается ли =AI() при каждом открытии?

Пользовательские функции пересчитываются при изменении аргументов. Чтобы не тратить токены на повторные вызовы, после получения результата скопируйте ячейки и вставьте как значения (Специальная вставка).

Можно ли выбрать модель прямо в формуле?

Да, вторым аргументом: =AI("…"; "anthropic/claude-haiku-latest"). Без него берётся модель по умолчанию из кода. Коды смотрите в каталоге.

AI прямо в Google Таблицах — начните с ключа

Получить ключ