Скрипты: частые вопросы и решение проблем
Частые вопросы о скриптах и что делать, если скрипт работает не так, как ожидалось. Начинайте с вкладки «Журнал»: там видны статус, вывод и текст ошибки каждого запуска.
Скрипты недоступны: «Скрипты доступны на тарифе «Бизнес» и выше»
Скрипты работают, если тариф «Бизнес» или выше у владельца рабочего пространства, в котором лежит таблица. Тариф участника, который открыл таблицу, не важен. Существующие скрипты без тарифа можно открыть и посмотреть, но не запустить.
«Время работы скриптов на сегодня закончилось»
Скриптам владельца таблицы даётся 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 вашего аккаунта Яндекса и обновляет данные за последние дни. См. Отчёты Яндекс.Метрики и Директа в таблицу.