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

Справочник ошибок скриптов

Здесь собраны сообщения об ошибках, которые скрипт может получить при запуске. Найдите текст из журнала поиском по странице (⌘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 iterablefor…of по значению, которое не массив, например по undefinedпроверьте, что в переменной массив
SyntaxError: Unexpected token '<' … is not valid JSONJSON.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 existsinsertSheet или 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 scripthideRows или 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: значение должно быть числом.передан текст или NaNNumber(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 минутзапустите снова, разнесите расписания разных скриптов
Запуск прервался. Запустите скрипт ещё раз.сбой на сервере во время запусказапустите снова
Код скрипта менял участник, который больше не может редактировать эту таблицу…правки кода от участника без доступавладелец скрипта проверяет и подтверждает код
Владелец скрипта больше не может редактировать эту таблицу.владелец потерял доступ, триггеры выключеныверните доступ владельцу
Аккаунт владельца скрипта заблокирован…аккаунт заблокированобратитесь в поддержку
В скрипте нет кода.код пустойдобавьте код
Запуск завершился сбоем. Запустите скрипт ещё раз.сбой на серверезапустите снова
Сервис скриптов вернул ошибку. Попробуйте ещё раз.сервис скриптов отклонил запускзапустите снова; если повторяется, обратитесь в поддержку
Скрипт был удалён. / Таблица больше недоступна. / Владельца скрипта больше нет в системе.запуск ждал, а скрипт, таблица или владелец пропали—
Сервис скриптов недоступен. Попробуйте позже. / Сервис скриптов занят. Попробуйте через минуту.временная недоступность сервисазапустите позже

Если ошибки нет в списке​

  1. Скопируйте текст ошибки и номер строки из журнала.
  2. Откройте редактор, нажмите «ИИ» → «Исправить ошибку последнего запуска»: ИИ получит текст ошибки и предложит исправление.
  3. Если ошибка в работе самого сервиса, напишите в поддержку и приложите текст из журнала.

Что дальше​