AI в Google Таблицах через AI Gateway: функция =AI() на Apps Script
Как добавить в Google Таблицы формулу =AI(): скрипт Apps Script вызывает OpenAI-совместимый API AI Gateway, ключ хранится в свойствах скрипта. Массовая обработка ячеек прямо в таблице.
В Google Таблицах можно завести собственную формулу =AI("…"), которая обращается к модели и возвращает ответ прямо в ячейку. Делается это через Apps Script — встроенный скриптовый движок Google. Так удобно массово переводить, классифицировать, суммировать или размечать данные строками таблицы. Модели берём из каталога AI Gateway.
Подготовка
Нужен ключ AI Gateway sk-aigate-… и базовый URL https://ai-gatewey.ru/v1. Ключ храним не в коде, а в свойствах скрипта (Script Properties) — они не видны тем, у кого есть доступ только к таблице.
Реализация
- Откройте редактор Apps Script
В таблице меню Расширения → Apps Script. Откроется редактор, привязанный к этому документу, — весь код ниже вставляем туда.
- Сохраните ключ в свойствах скрипта
Запустите один раз функцию-установщик (или задайте свойство вручную в настройках проекта) — ключ окажется в защищённом хранилище, а не в тексте формулы:
function setup() { PropertiesService.getScriptProperties() .setProperty('AIGATE_API_KEY', 'sk-aigate-ваш_ключ'); } - Функция =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; } - Используйте формулу в ячейках
Теперь
=AI()работает как встроенная функция и ссылается на другие ячейки — например, перевод из столбца A:=AI("Переведи на английский: " & A2)
Какие модели подойдут
Обработка строк таблицы — это множество однотипных запросов, поэтому берут быструю недорогую модель:
| Модель | Ввод, ₽/1М | Вывод, ₽/1М | Контекст |
|---|---|---|---|
| DeepSeek: DeepSeek V3 | 31 | 125 | 128K |
| OpenAI: GPT-5.4 Mini | 118 | 705 | 400K |
| Anthropic Claude Haiku Latest | 157 | 784 | 200K |
Частые вопросы
Почему формула иногда показывает ошибку лимита?
При протягивании на сотни строк таблица шлёт запросы пачками и упирается в квоту или RPM-лимит ключа (429) либо в собственные ограничения Apps Script на вызовы UrlFetchApp. Обрабатывайте данные частями и поднимите лимит ключа при необходимости.
Пересчитывается ли =AI() при каждом открытии?
Пользовательские функции пересчитываются при изменении аргументов. Чтобы не тратить токены на повторные вызовы, после получения результата скопируйте ячейки и вставьте как значения (Специальная вставка).
Можно ли выбрать модель прямо в формуле?
Да, вторым аргументом: =AI("…"; "anthropic/claude-haiku-latest"). Без него берётся модель по умолчанию из кода. Коды смотрите в каталоге.
AI прямо в Google Таблицах — начните с ключа
Получить ключ