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

Скрипты: частые вопросы и решение проблем

Частые вопросы о скриптах и что делать, если скрипт работает не так, как ожидалось. Начинайте с вкладки «Журнал»: там видны статус, вывод и текст ошибки каждого запуска.

Скрипты недоступны: «Скрипты доступны на тарифе «Бизнес» и выше»​

Скрипты работают, если тариф «Бизнес» или выше у владельца рабочего пространства, в котором лежит таблица. Тариф участника, который открыл таблицу, не важен. Существующие скрипты без тарифа можно открыть и посмотреть, но не запустить.

«Время работы скриптов на сегодня закончилось»​

Скриптам владельца таблицы даётся 300 минут работы в сутки на все таблицы. Норма обновляется в полночь по часовому поясу владельца. Сократить расход помогают запись блоками вместо работы с каждой ячейкой, более редкое расписание и выход из функции, когда делать нечего. См. Лимиты.

«У владельца таблицы уже выполняется несколько скриптов»​

Одновременно выполняется не больше 3 скриптов одного владельца. Ручной запуск в этот момент получает отказ: подождите минуту и запустите снова. Запуски по расписанию в такой момент пропускаются, а события «При изменении», формы и вебхуки ждут свободного места. В очереди одного триггера ждёт до 50 ответов формы: следующие пропускаются, а вебхук в такой момент получает ответ 429.

«Скрипт уже выполняется. Дождитесь окончания»​

Один и тот же скрипт не запускается второй раз, пока не закончился предыдущий запуск. Дождитесь окончания, статус виден в журнале.

Запуск отменён: «слишком долго ждал очереди»​

Запуск ждал свободного места больше 15 минут и был отменён. Обычно так бывает, когда одновременно запускается много скриптов одного владельца. Запустите скрипт снова или разнесите расписания разных скриптов по времени.

Статус «Превышено время»​

Запуск длится не больше 30 секунд. Ускорить скрипт:

  • читайте лист один раз через getDataRange().getValues(), а не ячейку за ячейкой;
  • записывайте результат одной командой setValues, а не setValue в цикле;
  • оформляйте диапазон целиком, а не каждую ячейку;
  • обрабатывайте большие объёмы частями: запоминайте в «Памяти», где остановились, и продолжайте при следующем запуске по расписанию.

Статус «Превышена память»​

Скрипту доступно 64 МБ. Не держите в памяти несколько копий больших листов и не собирайте огромные строки. Обрабатывайте данные частями.

«Функции … нет в коде» или статус «Функция не найдена»​

Триггер, пункт меню или кнопка вызывают функцию, которой больше нет: её переименовали или удалили. Верните функцию или выберите другую в настройках триггера, на вкладке «Макросы» или в меню картинки.

«Код скрипта менял участник, который больше не может редактировать эту таблицу»​

Код последним менял участник, которого удалили из таблицы или лишили права редактирования. Владелец скрипта должен проверить код и подтвердить его: сохранить сам или нажать «Подтвердить код». См. Права и безопасность.

Secrets.get возвращает null​

Возможные причины:

  • секрета с таким названием нет: проверьте написание на вкладке «Секреты», регистр важен;
  • код скрипта или библиотеки последним менял не владелец скрипта: владелец должен подтвердить код;
  • значение секрета последним менял не владелец: владелец должен сохранить его заново.

Причина указана в первой строке журнала запуска. См. Секреты.

Другая таблица не открывается​

  • Таблицы нет на вкладке «Таблицы» скрипта: её должен добавить владелец скрипта.
  • Владелец скрипта больше не может редактировать эту таблицу: в списке у неё пометка «нет доступа».
  • Код менял не владелец: доступ к другим таблицам приостановлен до подтверждения кода.
  • Команда недоступна в другой таблице: там работают только чтение и запись значений и список листов. См. Другие таблицы.

Триггер по расписанию не сработал​

Откройте вкладку «Триггеры»: в карточке триггера указан статус последнего запуска и причина пропуска. Частые причины: закончилась норма минут на сегодня, предыдущий запуск ещё работал, у владельца уже выполнялось несколько скриптов, триггер выключен. Время расписания считается по часовому поясу из профиля.

Триггер «При изменении» не срабатывает​

  • Правку сделал скрипт: изменения, которые делают скрипты, триггер не запускают.
  • В настройках триггера указан лист или диапазон, а правка была в другом месте.
  • Значения листа скрыты от автора скрипта: такие изменения в событие не попадают.
  • Событие приходит через несколько секунд после правки: правки собираются в одно событие.

Вебхук отвечает ошибкой​

Код ответа и поле error подскажут причину: 404 — неверный адрес или секрет, 401 — нет подписи или она неверная, 403 — адрес отправителя не разрешён или триггер выключен, 429 — слишком много запросов. Полная таблица кодов в статье Вебхуки.

Письмо не пришло​

  • Письма уходят после завершения запуска, в том числе если запуск закончился ошибкой: уходят письма, поставленные до ошибки.
  • За сутки можно отправить письма не больше чем 10 адресатам на все скрипты владельца таблицы. Если на письмо не хватает остатка, Mail.send выдаёт ошибку. Остаток показывает Mail.remaining().
  • Проверьте папку «Спам»: письмо приходит с пометкой «через Coverse».

Сообщение в Telegram не приходит​

  • Токен бота сохранён в секрет TELEGRAM_BOT_TOKEN.
  • Получатель сам написал боту хотя бы одно сообщение: бот не может первым написать человеку.
  • Для канала бот добавлен в канал администратором, а в chat указано "@имя_канала".

Текст ошибки Telegram виден в журнале запуска.

Дата сдвинулась на день или время не то​

Стандартные getDate(), getHours() и new Date(год, месяц, день) работают в часовом поясе сервера. Используйте Utilities.today(), Utilities.addDays(), Utilities.dateParts() и Utilities.formatDate(): они считают в часовом поясе владельца скрипта. См. Даты, числа и утилиты.

Число записалось как текст​

Передавайте числа числами: setValue(12.5), а не setValue("12.5"). Если число пришло текстом из внешнего сервиса, преобразуйте его: Number(value).

Можно ли запустить скрипт из своей системы​

Да: создайте триггер «По вебхуку» и отправляйте на его адрес POST-запрос. Если нужно не запускать скрипт, а читать и записывать данные таблицы из своей системы, используйте API Coverse Таблиц.

Кто видит код и журнал скрипта​

Код, журнал запусков и настройки видят все участники с правом редактирования таблицы. Читатели скрипты не видят. Значения секретов не видит никто, в журнале они заменяются на ***.

Что будет с данными, если удалить скрипт​

Удаляются код, журнал запусков, триггеры и пункты меню скрипта. Изменения, которые скрипт уже внёс в таблицу, остаются.

В журнале ошибка на английском. Что она значит?​

Часть ошибок команд скриптов показывается на английском, например Too many Coverse API calls in one run или Sheet "Итоги" not found. Что значит каждая и как её исправить, собрано в Справочнике ошибок.

Вебхук ответил 200, а строки в таблице нет​

Coverse отвечает 200 OK, когда принял запрос, а скрипт выполняется уже после ответа. Откройте журнал скрипта: у запуска по вебхуку будет статус «Ошибка» с текстом и номером строки или «Не запустился» с причиной, например запуск слишком долго ждал очереди или закончилась норма минут. Внешний сервис об этом не узнает и повторять запрос не будет.

Можно ли связать таблицу с 1С?​

Да, двумя способами: 1С сама отправляет документы на вебхук скрипта (работает и для базы в локальной сети), или скрипт по расписанию забирает данные из 1С через стандартный интерфейс OData. Код для обоих способов — в статье Интеграция с 1С.

Как выгружать заказы Wildberries и Ozon в таблицу?​

Скрипт по расписанию запрашивает заказы через API продавца и обновляет строки при изменении статуса. Нужны токен Wildberries с категорией «Статистика» или ключ Seller API Ozon. Пошагово: Заказы Wildberries и Ozon в таблицу.

Работают ли скрипты с МоимСкладом?​

Да: скрипт выгружает остатки товаров и заказы покупателей по расписанию, а новые заказы может получать сразу через вебхук МоегоСклада. См. Остатки и заказы МоегоСклада.

Можно ли принимать уведомления об оплатах ЮKassa и Т-Банка?​

Да. Платёжный сервис отправляет уведомление на адрес вебхука скрипта, скрипт проверяет, что уведомление настоящее, и записывает или обновляет строку платежа. См. Оплаты ЮKassa и Т-Банка в таблицу.

Как принимать заявки с сайта на Tilda?​

Укажите адрес вебхука скрипта в настройках форм Tilda как приёмщик Webhook. Скрипт запишет заявку строкой и, если нужно, пришлёт уведомление в Telegram. См. Заявки с сайта на Tilda в таблицу.

Можно ли сделать бота Telegram, который записывает в таблицу?​

Да. Бот подключается к вебхуку скрипта одной функцией, каждое сообщение пользователя записывается строкой, а бот отвечает от своего имени. См. Бот Telegram записывает в таблицу.

Можно ли выгружать отчёты Яндекс.Метрики и Директа?​

Да. Скрипт по расписанию запрашивает визиты и цели из Метрики и показы, клики и расходы из Директа по токену OAuth вашего аккаунта Яндекса и обновляет данные за последние дни. См. Отчёты Яндекс.Метрики и Директа в таблицу.