Раздел "Скрипты" включает в себя список скриптов, написанных на языке JavaScript и расширяющих функционал платформы в рамках конкретного проекта. Такие команды выполняют определенные задачи, например, обработку данных, взаимодействие с пользователем, импорт данных из сторонних форматов или интеграцию со сторонними сервисами (API).
Создание нового скрипта подразумевает обязательное введение наименования и типа скрипта.
По-умолчанию при создании скрипта генерируется шаблон, в зависимости от его типа. Для событийных скриптов предусмотрен шаблон, включающий в себя все доступные обработчики событий.
API ключ генерируется индивидуально для каждого пользователя при регистрации и является уникальный идентификатором, который позволяет осуществить проверку доступа к данным. Автором изменений, которые были произведены посредством запуска скрипта - будет тот пользователь, чей API ключ был указан при создании этого скрипта.
Поле библиотеки позволяет вызывать в скрипте активные функции типа библиотека.
Скрипты можно делать активными и неактивными с помощью чекбокса. Неактивные скрипты не запускаются и не используются.
Также чекбоксом регулируется доступность скрипта в других проектах. Это полезно для использования библиотек, созданных в других проектах.
Для взаимодействия с платформой в рамках написания скрипта необходимо пользоваться внутренними сервисами (скриптами). С их помощью можно, например, получать и редактировать типы материалов, контент, создавать бизнес-процессы и так далее.
Для выполнения HTTP-запросов в скриптах рекомендуется использовать библиотеку Axios. Это мощный инструмент для работы с внешними API и обмена данными между клиентом и сервером. Axios предоставляет удобный интерфейс для выполнения запросов типа GET, POST, PUT, DELETE и других, а также упрощает обработку ответов и ошибок.
Пример использования Axios
Для подключения к стороннему API и выполнения запроса можно воспользоваться следующим кодом:
axios({
method: 'get',
url: 'https://api.example.com/uploads/test.jpg',
responseType: 'stream'
})
.then(async response => {
const controller = new AbortController();
const { signal } = controller;
setTimeout(() => controller.abort(), 1000);
const file = await uploadFile(response.data, 'my_file.jpg', '3a50c01f-4d8b-44a3-9070-c7aa9c376a66', signal);
await createContent(
{
'fields': {
field_project_main_string:['value'],
field_project_main_file:[{id: file._id, title: 'my_file.jpg', description: ''}],
},
'contentTypeId': "d9508cc4-2a1a-463d-a032-4927b069280b",
});
});
*Операции над данными (получение, создание, удаление, обновление) рекомендуется вызывать асинхронными функциями.
*Функции, позволяющие настроить управление контентом помечаются ключевым словом async и содержат оператор await, который блокирует выполнение функции до тех пор, пока не будет получен результат асинхронной операции. После этого функция продолжит свое выполнение с полученным результатом.