Справочник ошибок скриптов
Здесь собраны сообщения об ошибках, которые скрипт может получить при запуске. Найдите текст из журнала поиском по странице (⌘F или Ctrl+F): часть сообщений показывается по-русски, часть — по-английски, как их выдаёт команда.
Где видна ошибка и как её читать
- Журнал запусков. У запуска со статусом «Ошибка» показаны текст ошибки, строка и столбец кода, где она случилась, и вывод
console.logдо ошибки. - Карточка триггера. В ней видно, чем закончился последний запуск по триггеру.
- Письмо владельцу. Если запуски по триггерам заканчиваются ошибкой три раза подряд, владелец скрипта получает письмо.
Ошибка команды выглядит так: CoverseError: Sheet "Итоги" not found. Ошибка самого кода JavaScript — так: TypeError: Cannot read properties of null (reading 'getRange'). В конце сообщения о синтаксической ошибке стоит позиция: [script.js:12:5] — строка 12, столбец 5.
Записи в таблицу копятся и уходят пачкой: перед следующим чтением, при вызове Coverse.table.flush() или в конце запуска. Поэтому ошибка записи, например из-за защиты листа, может показать строку кода, где таблица читается, а не ту, где вызван setValues. Чтобы найти точное место, поставьте Coverse.table.flush() сразу после подозрительной записи.

Статусы запуска
| Статус | Что значит | Что сделать |
|---|---|---|
| Успешно | функция выполнилась до конца | — |
| Ошибка | функция остановилась с ошибкой, её текст ниже | найдите текст на этой странице |
| Превышено время | запуск дольше 30 секунд: «Скрипт выполнялся слишком долго и был остановлен» | читайте и пишите блоками, обрабатывайте данные частями, см. Быстрые и экономные скрипты |
| Превышена память | скрипт занял больше 64 МБ: «Скрипту не хватило памяти, и он был остановлен» | не держите в памяти несколько копий больших листов, обрабатывайте частями |
| Функция не найдена | в коде нет функции, которую вызывают кнопка, меню или триггер: «Функция «main» не найдена в коде» | верните функцию или выберите другую в настройках |
| Не запустился | запуск отменён до начала, причина указана рядом | см. раздел Запуск, очередь и тариф |
Ошибки кода JavaScript
Эти сообщения выдаёт сам язык, они всегда на английском.
| Сообщение | Что значит | Что сделать |
|---|---|---|
SyntaxError: Unexpected token …, Unexpected end of input | лишняя или пропущенная скобка, кавычка, запятая | откройте строку из позиции [script.js:строка:столбец] и проверьте скобки рядом |
TypeError: Cannot read properties of undefined (reading '…') | обращение к строке, ячейке или полю, которого нет | проверьте, что столбец найден (indexOf не вернул -1) и цикл не выходит за rows.length |
TypeError: Cannot read properties of null (reading '…') | команда вернула null: например getSheetByName не нашёл лист | проверяйте результат перед использованием: if (!sheet) … |
TypeError: … is not a function | у объекта нет такой команды или опечатка в названии | сверьте название со Справочником команд |
ReferenceError: … is not defined | переменная или объект не объявлены, опечатка в регистре | проверьте написание; в скриптах нет setTimeout, fetch, require, SpreadsheetApp, UrlFetchApp — используйте команды Coverse |
SyntaxError: Identifier '…' has already been declared | одно имя объявлено дважды, например два примера вставлены в один скрипт | переименуйте одну из переменных или функций |
TypeError: Assignment to constant variable. | значение const меняется | объявите переменную через let |
TypeError: … is not iterable | for…of по значению, которое не массив, например по undefined | проверьте, что в переменной массив |
SyntaxError: Unexpected token '<' … is not valid JSON | JSON.parse получил HTML, обычно страницу ошибки сервиса | проверьте response.status и выведите response.text() |
Error: текст | скрипт сам остановился через throw new Error("текст") | это ваше сообщение, причина в нём |
Основы разбора ошибок — в статье Основы JavaScript для скриптов.
Лимиты запуска
| Сообщение | Что значит | Что сделать |
|---|---|---|
Too many Coverse API calls in one run (max 100) | больше 100 обращений к таблице за запуск, обычно из-за getValue или setValue в цикле | прочитайте лист один раз через getValues, запишите результат одним setValues |
Too many cells read in one run (max 200000) | прочитано больше 200 000 ячеек | читайте только нужные столбцы и строки, обрабатывайте по частям |
Too many cells written in one run (max 200000) | записано больше 200 000 ячеек | записывайте частями в нескольких запусках |
Script time limit reached while calling Coverse | время запуска закончилось во время обращения к таблице | сократите работу за один запуск |
| Время запуска закончилось, пока скрипт ждал ответа внешнего сервиса. | 30 секунд истекли во время Http или Telegram | уменьшите число запросов, задайте timeout |
| Время запуска закончилось, пока скрипт ждал ответа ИИ. | 30 секунд истекли во время CoverseAI.ask | отправляйте меньше данных или делайте меньше запросов |
Coverse API timed out, Coverse API is unreachable | таблица не ответила вовремя | запустите ещё раз; если повторяется, обратитесь в поддержку |
Coverse API rate limit exceeded | слишком частые обращения к таблице | запустите позже |
Table changes made before the failure were not saved: … | предупреждение в выводе: скрипт упал, и накопленные записи сохранить не удалось | причина после двоеточия; исправьте её и запустите снова |
Return value was dropped: … | предупреждение в выводе: результат функции не сохранён, он не превращается в JSON или больше 256 КБ | верните из функции простое значение или ничего |
| Показана только часть вывода | больше 500 строк console.log или строка длиннее 2000 знаков | выводите в журнал меньше |
Все цифры — в статье Лимиты.
Таблица, листы и диапазоны
Сообщения этого раздела показываются по-английски.
Диапазоны и значения
| Сообщение | Что значит | Что сделать |
|---|---|---|
Invalid range "…" | адрес диапазона не распознан | пишите адрес как в таблице: "A1", "A2:C10", "A:A" |
Pass the range without a sheet name, the sheet is already selected | в sheet.getRange передан адрес с названием листа | уберите название листа из адреса: sheet.getRange("A1:C10") |
… must be a positive whole number | номер строки, столбца или их количество не целое положительное | строки и столбцы считаются с 1; проверьте вычисления, например getLastRow() - 1 на листе только с заголовком даёт 0 |
The data does not match the range …: expected … rows of … cells | размер массива в setValues не совпадает с диапазоном | задавайте диапазон по размеру данных: getRange(row, col, values.length, values[0].length) |
{Values / Rows} must be a non-empty array of rows | в setValues или appendRows передан пустой массив или не массив строк | перед записью проверьте if (rows.length > 0) |
Cell values must be strings, numbers, booleans, dates or empty | в ячейку записывается объект или массив, часто целиком ответ внешнего сервиса | записывайте отдельные поля: item.name, item.price, или текст через JSON.stringify(item) |
Cell values must be valid dates | в ячейку записывается неверная дата, например new Date("текст") | проверьте дату через Utilities.toDate и запишите "", если она null |
appendRow expects a non-empty array of cells | в appendRow передан пустой массив или не массив | передавайте массив значений: appendRow([a, b, c]) |
Cell values must be finite numbers | в ячейку записывается NaN или Infinity, обычно после Number("текст") | проверяйте Number.isFinite(value) и записывайте "" вместо нечисла |
A value that starts with "=" is a formula, and function names in formulas are English… | формула записана с русским названием функции | функции в формулах пишутся по-английски: SUM, IF, VLOOKUP. Если это не формула, а текст, поставьте перед ним апостроф |
Access denied: Запись запрещена: ячейки защищены… | запись в защищённые ячейки | см. Права и безопасность |
Access denied: Чтение этого листа запрещено настройками защиты листа. | значения листа скрыты от автора скрипта | попросите владельца таблицы открыть доступ или используйте другой лист |
Листы
| Сообщение | Что значит | Что сделать |
|---|---|---|
Sheet "…" not found | листа с таким названием нет, getSheet остановил скрипт | проверьте название с учётом пробелов или используйте getSheetByName и проверку на null |
Sheet "…" already exists | insertSheet или copySheet с занятым названием | берите лист так: getSheetByName("…") || insertSheet("…") |
Sheet name must not contain [ ] : ? ! * / ' or " | недопустимый символ в названии | уберите символ из названия |
Sheet name is too long (max 100 characters) | название длиннее 100 знаков | сократите |
The last sheet of a table cannot be deleted | попытка удалить единственный лист | сначала создайте другой лист |
Too many sheets created, copied, moved, renamed or deleted in one run (max 20) | больше 20 операций с листами за запуск | разнесите операции на несколько запусков |
Строки и столбцы
| Сообщение | Что значит | Что сделать |
|---|---|---|
Rows and columns of this sheet cannot be changed by a script: … | на листе есть то, что не позволяет вставлять, удалять и переносить строки: объединения на границе, фильтр, группы, именованные диапазоны, импорт, формула на несколько ячеек, диаграммы, ответы формы, сводная, режимы фильтра, защищённые диапазоны или закреплённые строки | причина указана после двоеточия; уберите мешающее или перепишите данные через getValues и setValues |
Too many row and column changes in one run (max 15)… | больше 15 вставок, удалений и переносов за запуск | меняйте соседние строки одним блоком, остальное — следующим запуском |
The rows or their new place are outside the sheet, it has … rows | номер строки или столбца больше размера листа | проверьте номера |
Rows of a sheet with an active filter cannot be hidden or shown by a script | hideRows или showRows на листе с фильтром | снимите фильтр или не скрывайте строки скриптом |
Too many layout changes in one run (max 40)… | больше 40 изменений высоты, ширины, скрытия и закрепления | задавайте размер сразу для блока строк или столбцов |
Оформление, объединение, сортировка
| Сообщение | Что значит | Что сделать |
|---|---|---|
Too many format changes in one run (max 300)… | больше 300 вызовов оформления | оформляйте диапазон целиком, а не каждую ячейку |
A color is written as "#ff0000", "#f00", "rgb(255,0,0)" or a name such as "red" | цвет не распознан | используйте один из этих форматов |
Access denied: The range is protected… | оформление защищённого диапазона | см. Права и безопасность |
Too many conditional format changes in one run (max 20) | больше 20 изменений правил подсветки | создайте правило один раз, а не при каждом запуске |
Unknown condition "…" | неизвестное условие подсветки | см. условия setConditionalFormat в Справочнике команд |
Too many merges, sorts, range copies, filter, validation, protection and chart changes in one run (max 30)… | больше 30 таких операций | объединяйте и копируйте блоками |
A range with merged cells cannot be sorted | в сортируемом диапазоне есть объединённые ячейки | снимите объединение через breakApart() |
A range with an applied filter cannot be sorted by a script | на диапазоне включён фильтр | снимите фильтр |
The range covers a part of merged cells | диапазон задевает объединённую ячейку частично | расширьте диапазон на всю объединённую ячейку |
Cells can be merged, sorted and copied only in a collaborative table | таблица старого формата, в ней эти команды недоступны | обратитесь в поддержку |
The notes must match the range: … rows of … cells | размер массива в setNotes не совпадает с диапазоном | задавайте диапазон по размеру массива |
Фильтры, списки, защита
| Сообщение | Что значит | Что сделать |
|---|---|---|
The sheet already has a filter… | второй фильтр на листе | берите существующий: sheet.getFilter() || range.createFilter() |
The sheet has no filter: create it with range.createFilter() | у листа нет фильтра | создайте фильтр |
A filter needs a header row and at least one row of data | диапазон фильтра без данных | включите в диапазон заголовок и строки |
Unknown filter condition "…" | неизвестное условие фильтра | см. условия в Справочнике команд |
Access denied: The sheet has protected ranges: only a script of the owner of the table may change its filter | фильтр на листе с защищёнными диапазонами меняет только скрипт владельца таблицы | попросите владельца таблицы |
Access denied: Only the owner of the table can change its protection | менять защиту может только скрипт владельца таблицы | — |
A sheet holds at most 100 protected ranges | слишком много защищённых диапазонов | объедините диапазоны |
Диаграммы и сводные
| Сообщение | Что значит | Что сделать |
|---|---|---|
A sheet holds at most 20 charts: remove one with chart.remove() first | на листе уже 20 диаграмм | удалите старые: sheet.getCharts().forEach((chart) => chart.remove()) |
A chart needs at least two cells of data | диапазон диаграммы пустой или из одной ячейки | укажите диапазон с данными |
The chart type is one of: column, bar, line, area, pie | неизвестный тип | выберите один из этих |
The chart is not on the sheet any more… | диаграмму удалили | получите список заново через sheet.getCharts() |
A sheet named "…" already exists: pass replace: true… | лист с названием сводной уже есть | добавьте replace: true или задайте другое name |
The source has no column "…". Its columns: … | в источнике нет столбца с таким заголовком | сверьте название со списком в сообщении |
The pivot table is empty: check the fields and the filters | после фильтров не осталось данных | проверьте поля и фильтры |
The pivot table would take … cells, at most 50000… | сводная слишком большая | уменьшите число полей или сгруппируйте значения |
Другие таблицы и IMPORTRANGE
| Сообщение | Что значит | Что сделать |
|---|---|---|
| У скрипта нет доступа к другим таблицам. Владелец скрипта добавляет их на вкладке «Таблицы». | список других таблиц пуст | владелец скрипта добавляет таблицу на вкладке «Таблицы» |
| Этой таблицы нет в списке таблиц, которые скрипт может открывать… | таблица не добавлена | добавьте её на вкладке «Таблицы» |
| Доступ к другим таблицам приостановлен: код изменил участник, который не является владельцем скрипта… | код правил не владелец | владелец скрипта подтверждает код, см. Права и безопасность |
| Владелец скрипта больше не может редактировать эту таблицу, поэтому скрипт её не открывает. | у владельца пропал доступ к таблице | верните доступ или уберите таблицу из списка |
| Команда … не работает в другой таблице… | в другой таблице доступны только значения и список листов | прочитайте значения и обработайте их в своей таблице |
| Таблица «…»: … | ошибка команды в другой таблице | причина после двоеточия |
| IMPORTRANGE: формула должна состоять только из IMPORTRANGE… | формула импорта вложена в другую функцию | запишите IMPORTRANGE отдельной формулой |
| IMPORTRANGE: этой таблицы нет в списке таблиц скрипта… | источник не добавлен на вкладку «Таблицы» | добавьте его |
| IMPORTRANGE: такого листа нет в таблице-источнике. | неверное название листа во втором аргументе | сверьте название |
Подробнее: Другие таблицы.
HTTP-запросы
| Сообщение | Что значит | Что сделать |
|---|---|---|
| Слишком много внешних запросов за один запуск (не больше 50). | больше 50 вызовов Http и Telegram | сократите запросы или разнесите на несколько запусков |
| Внешние сервисы прислали слишком много данных за один запуск… | получено больше 10 МБ за запуск | запрашивайте меньше данных: фильтр по дате, страницы меньше |
| Http.fetch: ответ больше 2097152 байт. | один ответ больше 2 МБ | уменьшите страницу или период запроса |
| Http.fetch: сервер не ответил вовремя. | ответ не пришёл за 15 секунд или за отведённый timeout | повторите позже, уменьшите объём запроса |
| Http.fetch: запросы на внутренние адреса запрещены. | адрес во внутренней сети: localhost, 192.168.…, 10.… | сервис должен быть доступен из интернета |
| Http.fetch: порт … запрещён. | разрешены порты 80, 443 и с 1024 по 65535 | перенесите сервис на разрешённый порт |
| Http.fetch: сертификат сервера не прошёл проверку. | самоподписанный или просроченный сертификат | установите на сервере сертификат центра сертификации |
| Http.fetch: сервер не найден. | адрес написан с ошибкой или домен не существует | проверьте адрес |
| Http.fetch: сервер отклонил соединение. / сервер недоступен. | сервис не принимает соединения | проверьте, что сервис работает и открыт из интернета |
| Http.fetch: логин и пароль в адресе запрещены, передайте их в заголовке Authorization. | адрес вида https://логин:пароль@… | передайте Authorization: Basic …, см. Utilities.base64Encode |
| Http.fetch: у запроса GET не может быть тела. | body у GET | отправьте POST или передайте параметры в query |
| Http.fetch: заголовок «Host» задавать нельзя. | служебный заголовок | уберите его |
| Http.fetch: первым параметром нужен адрес строкой. | адрес не передан или это не строка, часто undefined из секрета или переменной | проверьте адрес перед запросом |
| Http.fetch: параметры должны быть объектом. | вторым параметром передан не объект | передавайте { headers: …, query: … } |
| Http.fetch: body должен быть строкой или объектом. / body не удалось преобразовать в JSON. | неверное тело запроса | передайте объект или строку без циклических ссылок |
| Http.fetch: запрос не выполнен. / сервер закрыл соединение. / не удалось распаковать ответ. | сбой связи с сервисом | повторите запуск позже |
| Ответ сервиса не является JSON. Посмотрите его через response.text(). | response.json() на ответе не в JSON | выведите response.text() и проверьте response.status |
Http.fetch: The redirect leads from https to http, which is not followed… | сервис перенаправляет на небезопасный адрес | используйте адрес https напрямую или redirect: "manual" |
| Http.fetch: слишком много перенаправлений. | больше 5 перенаправлений подряд | укажите конечный адрес |
Подробнее: Внешние сервисы.
Telegram
| Сообщение | Что значит | Что сделать |
|---|---|---|
| Telegram.send: токен бота не задан. Добавьте секрет TELEGRAM_BOT_TOKEN… | секрета нет | добавьте секрет на вкладке «Секреты» |
| Telegram.send: токен бота указан неверно… | значение не похоже на токен | скопируйте токен из BotFather целиком |
| Telegram.send: токен бота неверный или отозван. | токен похож на настоящий, но Telegram его не принял | выпустите токен заново в BotFather и сохраните в секрет |
| Telegram.send: получатель заблокировал бота. | пользователь остановил бота | сообщения этому получателю не дойдут, пока он не разблокирует бота |
| Telegram.send: бот не добавлен в этот чат. | бота нет в группе или канале | добавьте бота, для канала — администратором |
| Telegram.send: получатель ещё не писал боту… | бот не может написать первым | получатель открывает бота и нажимает «Запустить» |
| Telegram.send: Telegram просит подождать … с перед следующей отправкой. | слишком частые сообщения | отправляйте реже или собирайте текст в одно сообщение |
Telegram.send: Bad Request: can't parse entities… | ошибка в разметке при parseMode | проверьте теги или символы разметки в тексте |
| Telegram.send: текст сообщения пустой. | пустой текст | проверьте, что текст не пустая строка |
| Telegram.send: чат не найден. Получатель должен сначала написать боту… | бот не может писать первым | получатель пишет боту, бота добавляют в группу или канал |
| Telegram.send: получатель должен быть числовым идентификатором чата или названием канала вида @channel. | неверный chat | передайте число или "@канал" |
| Telegram.send: сообщение с разметкой не может быть длиннее 4096 символов. | с parseMode текст не делится на части | сократите текст или отправьте без разметки |
| Telegram.send: текст длиннее 20480 символов. | слишком длинный текст | отправьте несколько сообщений |
Почта
| Сообщение | Что значит | Что сделать |
|---|---|---|
| Mail.send: суточный лимит писем исчерпан… | за сутки уже отправлено 10 адресатам | проверьте остаток через Mail.remaining(), отправьте завтра |
| Mail.send: в одном письме может быть не больше 10 адресатов. | больше 10 адресатов в одном письме | разделите на несколько писем |
| Mail.send: «…» не является адресом почты… | адрес с ошибкой | проверьте адрес |
| Mail.send: тема должна быть одной строкой от 1 до 200 символов. | пустая, длинная или многострочная тема | исправьте тему |
| Mail.send: в письме нет текста. | пустые и текст, и htmlBody | добавьте текст |
| Mail.send: отправка писем сейчас недоступна. | почта временно недоступна | запустите позже |
| Письмо «…» не отправлено: исчерпан суточный лимит писем… | предупреждение в выводе: письмо не ушло после запуска | отправьте завтра или сократите число адресатов |
ИИ
| Сообщение | Что значит | Что сделать |
|---|---|---|
| CoverseAI.ask: недостаточно ИИ-кредитов… | на балансе пространства меньше 7 кредитов | пополните кредиты в разделе «Мой тариф и лимиты» |
| CoverseAI.ask: за один запуск можно сделать не больше 5 запросов к ИИ. | шестой вызов за запуск | отправляйте данные одним запросом через data |
| CoverseAI.ask: исчерпан суточный предел обращений скриптов к ИИ… | 100 запросов за сутки | продолжите завтра |
| CoverseAI.ask: data должен быть массивом строк с заголовками… | данные больше 200 строк, 30 столбцов или 20 000 знаков | отправьте данные порциями поменьше |
| CoverseAI.ask: ответ ИИ не является JSON… | с json: true ИИ вернул не JSON | опишите в вопросе, какой объект нужен |
| CoverseAI.ask: ИИ не ответил. Попробуйте ещё раз. | сервис ИИ не ответил | запустите ещё раз |
Секреты и память
| Сообщение | Что значит | Что сделать |
|---|---|---|
| Секреты в этот запуск не переданы: код скрипта или его библиотеку последним менял не владелец… | предупреждение: Secrets.get вернёт null | владелец скрипта подтверждает код |
| Не переданы в этот запуск секреты, которые последним менял не владелец скрипта: … | предупреждение по отдельным секретам | владелец сохраняет эти секреты заново |
| Недопустимое название секрета «…». | название не из латиницы, цифр и _, начинается с цифры или длиннее 64 знаков | переименуйте, например API_TOKEN |
| Properties: значение больше 9216 байт. | слишком длинное значение | храните меньше или разбейте на несколько ключей |
| Properties: в одном хранилище может быть не больше 100 ключей. | 101-й ключ | удалите ненужные через delete |
| Properties: значение должно быть строкой, числом или true/false. Объекты и массивы сохраняйте через setJson. | объект в set | используйте setJson |
| Properties: значение ключа «…» не является JSON. Прочитайте его через get. | getJson для значения, сохранённого через set | читайте через get |
Подробнее: Секреты, Память скрипта.
Утилиты
| Сообщение | Что значит | Что сделать |
|---|---|---|
| Utilities.parseDate: текст не подходит под шаблон. | текст даты отличается от шаблона, например в нём есть миллисекунды или пояс, которых нет в шаблоне | используйте Utilities.toDate, он понимает частые форматы и возвращает null вместо ошибки |
| Utilities.formatDate: в шаблоне неизвестное обозначение … | буква шаблона не поддерживается, регистр важен | день dd, месяц MM, год yyyy; латинский текст берите в кавычки: 'T' |
Utilities.addDays: a date is expected… | передана не дата | преобразуйте значение через Utilities.toDate и проверьте на null |
| Utilities.formatNumber: значение должно быть числом. | передан текст или NaN | Number(value) и проверка Number.isFinite |
| Utilities.parseCsv: значение в кавычках не закрыто. | CSV повреждён | проверьте источник, задайте разделитель вторым параметром |
| Utilities.rsaSign: закрытый ключ должен быть ключом RSA в формате PEM. | ключ не в PEM | сохраните ключ целиком, со строками -----BEGIN … KEY----- |
Utilities.rsaSign: the private key must be at most 4096 bits long | ключ длиннее 4096 бит | используйте ключ до 4096 бит |
| Utilities.sleep: пауза задаётся числом миллисекунд от 0 до 10000. | пауза больше 10 секунд | делайте паузы короче или запускайте по расписанию |
Библиотеки
| Сообщение | Что значит | Что сделать |
|---|---|---|
| Библиотека «…» не подключена к скрипту… | в рабочем пространстве нет библиотеки с таким именем или код не сохранён после добавления Library.use | проверьте имя библиотеки в разделе «Автоматизация» и сохраните код: библиотеки подключаются при сохранении |
| Library.use ждёт имя библиотеки текстом… | имя передано переменной или пустое | пишите имя строкой: Library.use("utils") |
| Библиотека не может подключать другую библиотеку во время загрузки… | Library.use на верхнем уровне библиотеки | вызывайте Library.use внутри функции библиотеки |
SyntaxError: Library "…": … и другие ошибки с Library "…" | ошибка при загрузке библиотеки, например синтаксическая | причина после двоеточия, исправьте код библиотеки. Ошибки внутри функций библиотеки показываются без этой приставки |
| Скрипт может подключать не больше 10 библиотек. | 11-я библиотека | объедините библиотеки |
Подробнее: Библиотеки.
Запуск, очередь и тариф
Эти причины видны у запусков со статусом «Не запустился» или во всплывающем сообщении после нажатия «Запустить». У отменённого запуска в журнале текст начинается с «Запуск отменён:».
| Сообщение | Что значит | Что сделать |
|---|---|---|
| Скрипты доступны на тарифе «Бизнес» и выше. — при запуске; Запуск отменён: скрипты недоступны на тарифе владельца таблицы. — в журнале | у владельца таблицы тариф без скриптов | смените тариф владельца рабочего пространства |
| Время работы скриптов на сегодня закончилось. — при запуске; Запуск отменён: время работы скриптов на сегодня закончилось. — в журнале | использованы 300 минут за сутки | дождитесь полуночи по часовому поясу владельца; сократите расход |
| У владельца таблицы уже выполняется несколько скриптов. Попробуйте через минуту. | при ручном запуске: уже идут 3 запуска владельца; запуски по триггерам в это время ждут в очереди или пропускаются | подождите или разнесите расписания |
| Скрипт уже выполняется. Дождитесь окончания. | при ручном запуске: этот же скрипт ещё работает | дождитесь окончания |
| Запуск слишком долго ждал очереди и был отменён… | запуск ждал больше 15 минут | запустите снова, разнесите расписания разных скриптов |
| Запуск прервался. Запустите скрипт ещё раз. | сбой на сервере во время запуска | запустите снова |
| Код скрипта менял участник, который больше не может редактировать эту таблицу… | правки кода от участника без доступа | владелец скрипта проверяет и подтверждает код |
| Владелец скрипта больше не может редактировать эту таблицу. | владелец потерял доступ, триггеры выключены | верните доступ владельцу |
| Аккаунт владельца скрипта заблокирован… | аккаунт заблокирован | обратитесь в поддержку |
| В скрипте нет кода. | код пустой | добавьте код |
| Запуск завершился сбоем. Запустите скрипт ещё раз. | сбой на сервере | запустите снова |
| Сервис скриптов вернул ошибку. Попробуйте ещё раз. | сервис скриптов отклонил запуск | запустите снова; если повторяется, обратитесь в поддержку |
| Скрипт был удалён. / Таблица больше недоступна. / Владельца скрипта больше нет в системе. | запуск ждал, а скрипт, таблица или владелец пропали | — |
| Сервис скриптов недоступен. Попробуйте позже. / Сервис скриптов занят. Попробуйте через минуту. | временная недоступность сервиса | запустите позже |
Если ошибки нет в списке
- Скопируйте текст ошибки и номер строки из журнала.
- Откройте редактор, нажмите «ИИ» → «Исправить ошибку последнего запуска»: ИИ получит текст ошибки и предложит исправление.
- Если ошибка в работе самого сервиса, напишите в поддержку и приложите текст из журнала.