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

Сравнение с Google Apps Script

Скрипты Coverse устроены похоже на Google Apps Script: тот же JavaScript, функции, триггеры, меню и знакомые команды (getRange, getValues, setValues, appendRow). Опыт работы с Apps Script пригодится сразу, а готовый скрипт обычно переносится за несколько минут.

При этом многое, что в Apps Script приходится собирать вручную, в Coverse уже встроено.

Что в Coverse удобнее​

ИИ в редакторе и в коде​

  • Скрипт по описанию. Опишите задачу словами, и ИИ в редакторе напишет код с учётом названий листов и столбцов вашей таблицы, предложит запуск по расписанию и нужные секреты. Изменения показываются построчно, их можно принять, отклонить или уточнить.
  • Исправление ошибок. Если запуск упал, кнопка «Исправить ошибку последнего запуска» передаёт ИИ текст ошибки и номер строки, и ИИ предлагает исправление.
  • CoverseAI.ask в коде. Скрипт может разобрать текст заявки, определить категорию обращения или составить сводку по данным одной командой, без своего ключа и договора с внешним сервисом.

См. Скрипт с помощью ИИ и ИИ в скриптах.

Telegram, секреты и внешние сервисы​

  • Telegram встроен. Telegram.send(chat, text) отправляет сообщение человеку, в группу или канал. Длинный текст делится на части сам.
  • Секреты встроены. Ключи и токены хранятся на отдельной вкладке, не попадают в код и заменяются на *** в журнале запусков. См. Секреты.
  • HTTP-запросы без ручной сборки. Параметры адреса передаются объектом query, объект в body отправляется как JSON, ответ разбирается через response.json(). См. Внешние сервисы.

Вебхуки без публикации веб-приложения​

В Apps Script для приёма запросов из другого сервиса нужно опубликовать веб-приложение с функцией doPost и выпускать новую версию после изменений кода. В Coverse достаточно создать триггер «По вебхуку»:

  • адрес появляется сразу, изменения кода действуют без повторной публикации;
  • функция получает тело запроса, параметры и заголовки;
  • встроены проверка HMAC-подписи, токен в заголовке и список разрешённых IP-адресов;
  • частота запросов ограничена, а после серии неудачных проверок триггер выключается сам.

См. Вебхуки.

Событие изменения со всеми ячейками и правками из API​

  • Триггер «При изменении» получает список всех изменённых ячеек с адресом, значением и формулой.
  • Триггер срабатывает и на правки через API Coverse Таблиц, а поле event.source показывает, откуда пришла правка.
  • Правки за несколько секунд собираются в одно событие, поэтому вставка большого блока не запускает скрипт на каждую ячейку.

См. Триггеры.

Безопасная совместная работа над кодом​

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

См. Права и безопасность.

Проверка и отладка​

  • «Запустить с событием»: функцию для триггера можно проверить на тестовом событии или на последнем настоящем событии из журнала, не дожидаясь правки или ответа формы.
  • Журнал запусков хранит последние 30 запусков с выводом console.log, статусом, длительностью и номером версии кода.
  • Версии кода: последние 200 версий, сравнение с текущим кодом и возврат кнопкой «Вернуть эту версию».
  • Расход времени виден в панели: «Сегодня: N мин из 5 ч».

Запуск из таблицы​

Пункты меню «Макросы», кнопки-картинки и сочетания клавиш настраиваются на вкладке «Макросы» без кода. См. Макросы и кнопки.

Что учесть при переносе​

  • Запуск длится до 30 секунд. Для работы с таблицей этого обычно достаточно, если читать и записывать данные блоками. Долгую обработку разбейте на части: запоминайте в «Памяти», где остановились, и продолжайте при следующем запуске по расписанию.
  • Триггеры и меню настраиваются в редакторе, а не командами ScriptApp.newTrigger и createMenu.
  • Другие таблицы подключаются на вкладке «Таблицы» скрипта, до 10 штук. В них доступны чтение и запись значений и список листов. См. Другие таблицы.
  • Диалогов, боковых панелей, своих функций для ячеек, CacheService и LockService пока нет. Один и тот же скрипт не запускается дважды одновременно, поэтому в типичных задачах блокировка не нужна.

Все ограничения собраны в статье Лимиты.

Соответствие команд​

Google Apps ScriptCoverse
SpreadsheetApp.getActiveSpreadsheet()Coverse.table
ss.getSheetByName("Лист")Coverse.table.getSheetByName("Лист")
ss.insertSheet("Лист")Coverse.table.insertSheet("Лист")
SpreadsheetApp.openById(id)Coverse.tables.open(id), таблица должна быть на вкладке «Таблицы»
sheet.getRange, getValues, setValues, appendRowте же названия
SpreadsheetApp.flush()Coverse.table.flush()
UrlFetchApp.fetch(url, params)Http.fetch(url, options)
MailApp.sendEmail(to, subject, body)Mail.send(to, subject, body)
PropertiesService.getScriptProperties()Properties.script
PropertiesService.getDocumentProperties()Properties.table
Utilities.formatDate(date, tz, pattern)Utilities.formatDate(date, pattern, tz)
Logger.log(...)console.log(...)
ScriptApp.newTrigger(...)вкладка «Триггеры» в редакторе
SpreadsheetApp.getUi().createMenu(...)вкладка «Макросы» в редакторе
doPost(e) в веб-приложениитриггер «По вебхуку», функция получает event.json
onEdit(e), e.range, e.valueonEdit(event), event.changes (все изменённые ячейки); event.range — адрес первой изменённой ячейки текстом, например "E5"; event.value — её значение
e.namedValues в onFormSubmitevent.namedValues

Как перенести скрипт​

Разбор на живом примере — в статье Перенос скрипта из Google Apps Script: пример.

Быстрее всего поручить перенос ИИ: откройте редактор, напишите «Перепиши этот скрипт Google Apps Script для Coverse» и вставьте код. ИИ заменит команды и подставит названия листов вашей таблицы.

Вручную:

  1. Создайте скрипт в таблице Coverse и вставьте код.
  2. Замените объекты верхнего уровня по таблице выше. Список всех команд Coverse — во вкладке «Справка» редактора.
  3. Перенесите ключи и пароли из свойств скрипта в Секреты.
  4. Настройте триггеры и пункты меню на вкладках «Триггеры» и «Макросы».
  5. Проверьте функцию кнопкой «Запустить с событием» и посмотрите журнал.

Частые вопросы​

Есть ли в Coverse аналог Google Apps Script?​

Да, скрипты Coverse: JavaScript, триггеры, меню и знакомые команды getRange, getValues, setValues, appendRow. Готовый скрипт Apps Script обычно переносится за несколько минут.

Можно ли перенести скрипт из Google Apps Script автоматически?​

Да: откройте редактор, нажмите «ИИ», напишите «Перепиши этот скрипт Google Apps Script для Coverse» и вставьте код. Проверьте изменения перед тем, как принять.

Чего в скриптах Coverse нет по сравнению с Apps Script?​

Пока нет диалогов и боковых панелей, своих функций для ячеек, CacheService и LockService. Один запуск длится до 30 секунд, долгую обработку разбивают на части.