Odoo 고객 데이터를 가져오고 JSON 또는 Excel로 내보내기
고급
이것은CRM분야의자동화 워크플로우로, 18개의 노드를 포함합니다.주로 If, Code, Odoo, Webhook, Function 등의 노드를 사용하며. Odoo 고객 데이터 가져오기 및 JSON 또는 Excel로 내보내기
사전 요구사항
- •HTTP Webhook 엔드포인트(n8n이 자동으로 생성)
카테고리
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"meta": {
"instanceId": "6b3e8c6c30cdfbf06283a3fa57016932c6b4ec959896c5c546ef5865ff697ff1"
},
"nodes": [
{
"id": "752a1ab6-274c-4f09-9bf1-e2dba414aaf1",
"name": "회사 요청 수신1",
"type": "n8n-nodes-base.webhook",
"position": [
-816,
3152
],
"webhookId": "get-companies-uuid",
"parameters": {
"path": "/api/v1/get-customers",
"options": {},
"responseMode": "responseNode"
},
"typeVersion": 2.1
},
{
"id": "66762aac-2d62-4d59-9956-816476d0f92f",
"name": "동적 필터 준비1",
"type": "n8n-nodes-base.function",
"position": [
-576,
3152
],
"parameters": {
"functionCode": "// const query = $json[\"query\"] || {}\n// const filters = []\n// if (query.name) filters.push([\"name\", \"Like\", query.name])\n// if (query.country) filters.push([\"country_code\", \"=\", query.country])\n// const limit = query.limit ? parseInt(query.limit) : 25\n// const response_format = query.response_format || 'json'\n// return [{ json: { filters, limit, response_format } }]\n\nconst query = $json[\"query\"] || {};\n\n// Validate required 'name' parameter\nif (!query.name || query.name.trim() === \"\") {\n return [\n {\n json: {\n success: false,\n message: \"Missing required parameter: name\",\n },\n },\n ];\n}\n\nconst filters = [];\nfilters.push([\"name\", \"Like\", query.name]); // name is mandatory\n\nconst response_format = query.response_format || \"json\";\n\nreturn [\n {\n json: { filters, response_format },\n },\n];"
},
"typeVersion": 1
},
{
"id": "e727d97c-678b-41b8-8db4-d1615c73a116",
"name": "출력 데이터 준비1",
"type": "n8n-nodes-base.function",
"position": [
0,
3152
],
"parameters": {
"functionCode": "if (items.length === 0 || Object.keys(items[0].json).length === 0) {\n return [{ json: { success: false, message: 'No matching company records found' } }]\n}\nconst data = items.map(item => ({ ...item.json, report_generated_on: new Date().toISOString() }))\nreturn data.map(d => ({ json: d }))"
},
"typeVersion": 1
},
{
"id": "9187426f-d4d0-4461-af73-3f31cdb0cc17",
"name": "Excel 필요 여부 확인1",
"type": "n8n-nodes-base.if",
"position": [
288,
3152
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $('Prepare Dynamic Filter1').item.json.response_format }}",
"value2": "excel"
}
]
}
},
"typeVersion": 1
},
{
"id": "ed6030ad-11f0-43f6-aee5-147ee0c055de",
"name": "Excel로 변환1",
"type": "n8n-nodes-base.convertToFile",
"position": [
896,
3104
],
"parameters": {
"options": {},
"operation": "xlsx"
},
"typeVersion": 1.1
},
{
"id": "0e6e1540-4c2e-45fe-a75a-6e511a95937b",
"name": "파일로 응답1",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
1216,
3104
],
"parameters": {
"options": {},
"respondWith": "binary"
},
"typeVersion": 1.4
},
{
"id": "d64e68cf-c80c-4633-bc4f-614d572ca762",
"name": "JSON으로 응답1",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
1216,
3504
],
"parameters": {
"options": {},
"respondWith": "allIncomingItems"
},
"typeVersion": 1.4
},
{
"id": "d2f28f28-a541-42d1-aaf8-94ab14723a53",
"name": "개요 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1792,
2288
],
"parameters": {
"width": 900,
"height": 620,
"content": "## How it works\nThis workflow provides an API endpoint `/api/v1/get-customers` that retrieves customer contact records directly from your Odoo instance. It’s designed for teams who need to query or export customer data on demand — either in JSON for integrations or Excel (.xlsx) for reporting.\n\nWhen a request is made, the workflow:\n1. Accepts query parameters (`name`, `response_format`).\n2. Validates the name input (required for search).\n3. Fetches all matching customers (non-companies) from Odoo using an `Like` filter for partial matches.\n4. Dynamically returns either a JSON response or an Excel file download depending on the `response_format` parameter.\n\nThis makes it ideal for quick data exports\n\n\n\n## Setup steps\n1. Open the Webhook node and note the endpoint `/api/v1/get-customers`.\n2. Configure your Odoo API credentials in the Odoo node.\n3. Optionally update the `fieldsList` in the Odoo node to include more contact fields (email, city, etc.).\n4. Test using a browser or Postman: \n - `/api/v1/get-customers?name=Demo&response_format=json` \n - `/api/v1/get-customers?name=Demo&response_format=excel`"
},
"typeVersion": 1
},
{
"id": "ad743706-da44-436c-a330-96f289469989",
"name": "고객 데이터 가져오기",
"type": "n8n-nodes-base.odoo",
"position": [
-320,
3152
],
"parameters": {
"options": {
"fieldsList": [
"display_name",
"name",
"email",
"phone",
"mobile",
"parent_id",
"country_code",
"country_id"
]
},
"resource": "custom",
"operation": "getAll",
"returnAll": true,
"filterRequest": {
"filter": [
{
"value": "={{ $json.filters[0][2] && $json.filters[0][2].toString().trim() !== '' ? $json.filters[0][2] : \"False\" }}",
"operator": "like",
"fieldName": "name"
}
]
},
"customResource": "res.partner"
},
"credentials": {
"odooApi": {
"id": "rhW7JbaWT0NTawBZ",
"name": "IMM Odoo 18"
}
},
"typeVersion": 1
},
{
"id": "5d55b9d2-a30b-4efd-8a22-e4d80851163a",
"name": "개요 노트2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-880,
2928
],
"parameters": {
"color": 7,
"width": 452,
"height": 380,
"content": "## Request & Validation\nReceives the API request and checks for the required “name” parameter.\nReturns a validation message if missing."
},
"typeVersion": 1
},
{
"id": "e8d5c637-2adc-4c45-ab56-81eabe9af5ee",
"name": "개요 노트3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-400,
2928
],
"parameters": {
"color": 7,
"width": 276,
"height": 380,
"content": "## Search Records from Odoo\n- Queries `res.partner` \n**Contact Table** records in Odoo using “Like” for partial matches.\n- Customize the fields in the node options if needed.\n- **Note: Name search is case-sensitive.**"
},
"typeVersion": 1
},
{
"id": "5b009e21-3259-430b-aaf1-044e5c364eb8",
"name": "개요 노트4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-96,
2928
],
"parameters": {
"color": 7,
"width": 276,
"height": 380,
"content": "## Prepare data and manage response json object."
},
"typeVersion": 1
},
{
"id": "af201ab6-7f0f-4806-bba1-7d9f718eeb75",
"name": "개요 노트5",
"type": "n8n-nodes-base.stickyNote",
"position": [
208,
2928
],
"parameters": {
"color": 7,
"width": 276,
"height": 380,
"content": "## Check response_format\nIf response_format=excel → returns a downloadable Excel file.\nOtherwise, returns JSON with company data."
},
"typeVersion": 1
},
{
"id": "1b71d124-7d74-421c-882d-c67b6e6f9c08",
"name": "바이너리 파일 생성용 전체 데이터 반환",
"type": "n8n-nodes-base.code",
"position": [
592,
3104
],
"parameters": {
"jsCode": "return $input.all()"
},
"typeVersion": 2
},
{
"id": "4dab4b62-287e-48ab-851d-8f8277d4eb10",
"name": "개요 노트6",
"type": "n8n-nodes-base.stickyNote",
"position": [
512,
2928
],
"parameters": {
"color": 7,
"width": 276,
"height": 380,
"content": "## Prepare Data for Binary file."
},
"typeVersion": 1
},
{
"id": "d7dccf04-2209-4638-a535-175b8207a70d",
"name": "개요 노트7",
"type": "n8n-nodes-base.stickyNote",
"position": [
816,
2928
],
"parameters": {
"color": 7,
"width": 276,
"height": 380,
"content": "## Create excel file"
},
"typeVersion": 1
},
{
"id": "278e9a77-f740-4adb-8a9b-465cc48b56e2",
"name": "개요 노트8",
"type": "n8n-nodes-base.stickyNote",
"position": [
1120,
2928
],
"parameters": {
"color": 7,
"width": 276,
"height": 380,
"content": "## Response to web-hook with excel file."
},
"typeVersion": 1
},
{
"id": "e86f38f1-12de-4da2-99e2-f5e4cf863b27",
"name": "개요 노트9",
"type": "n8n-nodes-base.stickyNote",
"position": [
1136,
3328
],
"parameters": {
"color": 7,
"width": 276,
"height": 380,
"content": "## Response to web-hook with json object."
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"ad743706-da44-436c-a330-96f289469989": {
"main": [
[
{
"node": "e727d97c-678b-41b8-8db4-d1615c73a116",
"type": "main",
"index": 0
}
]
]
},
"ed6030ad-11f0-43f6-aee5-147ee0c055de": {
"main": [
[
{
"node": "0e6e1540-4c2e-45fe-a75a-6e511a95937b",
"type": "main",
"index": 0
}
]
]
},
"e727d97c-678b-41b8-8db4-d1615c73a116": {
"main": [
[
{
"node": "9187426f-d4d0-4461-af73-3f31cdb0cc17",
"type": "main",
"index": 0
}
]
]
},
"66762aac-2d62-4d59-9956-816476d0f92f": {
"main": [
[
{
"node": "ad743706-da44-436c-a330-96f289469989",
"type": "main",
"index": 0
}
]
]
},
"9187426f-d4d0-4461-af73-3f31cdb0cc17": {
"main": [
[
{
"node": "1b71d124-7d74-421c-882d-c67b6e6f9c08",
"type": "main",
"index": 0
}
],
[
{
"node": "d64e68cf-c80c-4633-bc4f-614d572ca762",
"type": "main",
"index": 0
}
]
]
},
"752a1ab6-274c-4f09-9bf1-e2dba414aaf1": {
"main": [
[
{
"node": "66762aac-2d62-4d59-9956-816476d0f92f",
"type": "main",
"index": 0
}
]
]
},
"1b71d124-7d74-421c-882d-c67b6e6f9c08": {
"main": [
[
{
"node": "ed6030ad-11f0-43f6-aee5-147ee0c055de",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 고객관계관리
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
API 엔드포인트를 통해 Odoo 회사 데이터를 내보내며 JSON/Excel 출력 옵션을 지원
API 엔드포인트를 통해 Odoo 회사 데이터를 내보내며 JSON/Excel 출력 옵션을 지원
If
Code
Odoo
+
If
Code
Odoo
18 노드V3 Code Studio
고객관계관리
[템플릿] AI 반려동물 가게 v8
🐶 AI 펫 샵 어시스턴트 - GPT-4o, Google 캘린더 및 WhatsApp/Instagram/Facebook 통합
If
N8n
Set
+
If
N8n
Set
244 노드Amanda Benks
영업
AI 대리인 레스토랑 [템플릿]
🤖 WhatsApp, 인스타그램, 메신저의 AI 레스토랑 도우미
If
N8n
Set
+
If
N8n
Set
239 노드Amanda Benks
기타
Abacate Pay를 사용한 자동화된 주문 확인: 첫 구매 쿠폰 보상, 이메일 및 Slack 통해
Abacate Pay를 사용한 자동화된 주문 확인: 첫 구매 쿠폰 보상, 이메일 및 Slack 통해
If
Set
Code
+
If
Set
Code
13 노드Matheus Pedrosa
고객관계관리
Webhook에서 잠재 고객 생성
웹 양식 잠재 고객을 capture하고 구조화하여 Odoo CRM에 적합하게 합니다.(v15-v18 호환)
Code
Odoo
Webhook
+
Code
Odoo
Webhook
7 노드Evozard
고객관계관리
Bitrix24 태스크 양식 위젯 애플리케이션 워크플로우 예제
Bitrix24任务表单小部件应用程序워크플로우 (带Webhook통합)
If
Set
Code
+
If
Set
Code
21 노드Ferenc Erb
기타
워크플로우 정보
난이도
고급
노드 수18
카테고리1
노드 유형8
저자
V3 Code Studio
@v3codestudio🚀 AI & Automation Expert | n8n Creator | Workflow Specialist | Automation Specialist | V3 Code Studio I build smart automation workflows with n8n to help businesses streamline operations, save time, and increase productivity. Passionate about no-code/low-code automation and AI-driven solutions that make processes efficient, scalable, and growth-oriented.
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유