Импорт и экспорт рабочих процессов
Рабочие процессы можно сохранять локально в виде JSON-файла. В таком виде его можно импортировать в любой n8n-аккаунт и работать с ним, как со своим.
⚠
Следите за экспортом Credentials
По утверждению справки n8n, при экспорте workflow вместе с ним экспортируются все вовлеченные в него учетные данные: API-ключи, логины-пароли и прочие чувствительные данные. Опытным путем установлено, что как минимум у некоторых учетных данных экспортируется только их название в вашем аккаунте. Вам необходимо самостоятельно удалять их из JSON-файла.
Операции экспорта и импорта возможны как через редактор, так и через командную строку. Мы рассмотрим только первый вариант.
Экспорт. В левой панели Workflow
→ Download
.
⚠
Прочерки при экспорте
Если название вашего рабочего процесса набрано на русском языке, оно не сохранится, вместо символов появятся прочерки. Так что при сохранении либо переименуйте курс на латинице, либо уже переименовывайте JSON-файл. Теги workflow тоже не сохраняются
Импорт: В левой панели Workflow
→ Import from File
⚠
Импорт происходит в текущий холст
При импорте workflow не будет создан новый процесс. Все узлы и их связи просто упадут на текущий холст. Все узлы, которые были на холсте, также останутся
Импорт через вставку кода. Можно импортировать workflow, просто вставив скопированный заранее JSON-код (Ctrl+V
или Cmd+V
). Например, скопировав код в редакторе. Или, как будет показано далее, скопировав код из библиотеки рабочих процессов.
Сообщество и библиотека рабочих процессов
В n8n очень живое комьюнити, которое делится своими наработками на странице n8n.io/workflows. Это законченные рабочие процессы с описанием их работы — можно брать и использовать!
Конечно, вы тоже можете поделиться своим workflow. Только не берите шаблон из курса — вряд ли он кому-то, кроме Никиты, интересен, 🙂
Как поделиться своим worflow (если придумали что-то интересное)
- Залогиньтесь на n8n.io
- Нажмите на кнопку
+ Share New Workflow
- В Name введите название вашего workflow. Оно должно давать представление, что именно делает процесс.
- В Description опишите ваш рабочий процесс и прикрепите скриншот
- Скриншот должен содержать снимок всего редактора
- Описание должно содержать перечень всех узлов workflow с описанием их функций
- В своем редакторе выделите все узлы (
Ctrl+A
илиCmd+A
) и скопируйте их (Ctrl+C
илиCmd+C
) - Кликните в поле Workflow Code вашей заявки, удалите текущий код, и вставьте свой (
Ctrl+V
илиCmd+V
) - Нажмите на кнопку
Publish Workflow to Share
, чтобы отправить своё предложение
Команда n8n рассмотрит шаблон, и если сочтет его подходящим для общей библиотеки, опубликует его.
Бонус
Ниже находится код из нашей задачи с университетами. Вы уже знаете, как его можно посмотреть
{
"name": "Universities - Telegram",
"nodes": [
{
"parameters": {},
"name": "Start",
"type": "n8n-nodes-base.start",
"typeVersion": 1,
"position": [
620,
200
]
},
{
"parameters": {},
"name": "NoOp",
"type": "n8n-nodes-base.noOp",
"typeVersion": 1,
"position": [
1560,
440
],
"notesInFlow": true,
"notes": "Ничего не делаем"
},
{
"parameters": {
"url": "https://datausa.io/api/data?CIP=500602&measures=Completions&drilldowns=Sector,University",
"options": {},
"queryParametersUi": {
"parameter": [
{
"name": "year",
"value": "latest"
}
]
}
},
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 1,
"position": [
860,
340
],
"notesInFlow": true,
"notes": "Получаем данные с Data USA"
},
{
"parameters": {
"operation": "append",
"application": "apphD8WPBGnEiIocB",
"table": "Университеты",
"addAllFields": false,
"fields": [
"Название",
"Количество выпускников"
],
"options": {}
},
"name": "Airtable",
"type": "n8n-nodes-base.airtable",
"typeVersion": 1,
"position": [
2000,
340
],
"credentials": {
"airtableApi": {
"id": "12",
"name": "Airtable account"
}
}
},
{
"parameters": {
"keys": {
"key": [
{
"currentKey": "=University",
"newKey": "Название"
},
{
"currentKey": "=Completions",
"newKey": "Количество выпускников"
}
]
}
},
"name": "Rename Keys",
"type": "n8n-nodes-base.renameKeys",
"typeVersion": 1,
"position": [
1800,
220
],
"notesInFlow": true,
"notes": "Переименовываем для поля"
},
{
"parameters": {
"fieldToSplitOut": "data",
"options": {}
},
"name": "Split Out",
"type": "n8n-nodes-base.itemLists",
"typeVersion": 1,
"position": [
1080,
340
],
"notesInFlow": true,
"notes": "Извлекаем массив данных"
},
{
"parameters": {
"conditions": {
"string": [
{
"value1": "={{$json["Sector"]}}",
"value2": "Private not-for-profit, 4-year or above"
}
]
}
},
"name": "If",
"type": "n8n-nodes-base.if",
"typeVersion": 1,
"position": [
1320,
340
],
"notesInFlow": true,
"notes": "Оставляем целевые программы"
},
{
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"name": "Telegram Trigger",
"type": "n8n-nodes-base.telegramTrigger",
"typeVersion": 1,
"position": [
620,
500
],
"webhookId": "15996e9e-ae93-41aa-abd3-bba045b8de0d",
"credentials": {
"telegramApi": {
"id": "4",
"name": "Telegram account"
}
}
},
{
"parameters": {
"chatId": "={{$node["Telegram Trigger"].json["message"]["chat"]["id"]}}",
"text": "=Лучшие университеты для обучения киноискусству: {{$item(0).$node["Rename Keys"].json["Название"]}}, {{$item(1).$node["Rename Keys"].json["Название"]}} и {{$item(2).$node["Rename Keys"].json["Название"]}}",
"additionalFields": {}
},
"name": "Telegram",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1,
"position": [
2000,
100
],
"executeOnce": true,
"credentials": {
"telegramApi": {
"id": "4",
"name": "Telegram account"
}
}
},
{
"parameters": {
"operation": "sort",
"sortFieldsUi": {
"sortField": [
{
"fieldName": "Completions",
"order": "descending"
}
]
},
"options": {}
},
"name": "Sort",
"type": "n8n-nodes-base.itemLists",
"typeVersion": 1,
"position": [
1560,
220
],
"notes": "Сортируем по числу выпускников"
}
],
"connections": {
"HTTP Request": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
}
]
]
},
"Split Out": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"If": {
"main": [
[
{
"node": "Sort",
"type": "main",
"index": 0
}
],
[
{
"node": "NoOp",
"type": "main",
"index": 0
}
]
]
},
"Rename Keys": {
"main": [
[
{
"node": "Airtable",
"type": "main",
"index": 0
},
{
"node": "Telegram",
"type": "main",
"index": 0
}
]
]
},
"Sort": {
"main": [
[
{
"node": "Rename Keys",
"type": "main",
"index": 0
}
]
]
},
"Start": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"Telegram Trigger": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {},
"id": 97
}
Следующий урок → Заключение — и что делать дальше
Предыдущий урок → 9. Отправляем сообщение с помощью узла Телеграм
К курсу → Вводный курс по сервису автоматизации n8n