8
n8n 한국어amn8n.com

자동화 재고 관리

중급

이것은Document Extraction분야의자동화 워크플로우로, 15개의 노드를 포함합니다.주로 Code, Airtable, SendInBlue, ScheduleTrigger 등의 노드를 사용하며. Airtable 구매 오더 생성 및 공급업체 이메일을 사용한 재고 자동 관리

사전 요구사항
  • Airtable API Key

카테고리

워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "meta": {
    "instanceId": "b6731f6e46273cffeac6b5188a5b3bcb0840c00108e73b48ae2b799ac6e8e081",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "fe401179-5a8b-4232-b148-9bf4d96ceb9b",
      "name": "재고 부족 제품 조회",
      "type": "n8n-nodes-base.airtable",
      "position": [
        -2340,
        -540
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "apprZl1I4LgjwhSVf",
          "cachedResultUrl": "https://airtable.com/apprZl1I4LgjwhSVf",
          "cachedResultName": "Products Tables"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblLQxA3XuieqUIja",
          "cachedResultUrl": "https://airtable.com/apprZl1I4LgjwhSVf/tblLQxA3XuieqUIja",
          "cachedResultName": "Products Table"
        },
        "options": {},
        "operation": "search",
        "filterByFormula": "{stock_level} <= {reorder_threshold}"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "j2v4SdOKrSSYQlXT",
          "name": "Airtable Personal Access Token account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "46bfdc76-b244-41a9-a686-09c8eb140968",
      "name": "재고 부족 제품의 공급업체 세부 정보 조회",
      "type": "n8n-nodes-base.airtable",
      "position": [
        -2120,
        -540
      ],
      "parameters": {
        "id": "={{ $json.supplier_id }}",
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "apprZl1I4LgjwhSVf",
          "cachedResultUrl": "https://airtable.com/apprZl1I4LgjwhSVf",
          "cachedResultName": "Products Tables"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tbl7LUCS0MYq0Fjq6",
          "cachedResultUrl": "https://airtable.com/apprZl1I4LgjwhSVf/tbl7LUCS0MYq0Fjq6",
          "cachedResultName": "Supplier"
        },
        "options": {}
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "j2v4SdOKrSSYQlXT",
          "name": "Airtable Personal Access Token account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "836a5efb-0cad-4508-8703-911241f0b847",
      "name": "동적 재주문 수량 계산",
      "type": "n8n-nodes-base.code",
      "position": [
        -1900,
        -540
      ],
      "parameters": {
        "jsCode": "const safetyMargin = 1.2;\n// Process all input items\nconst outputItems = [];\nfor (const item of $input.all()) {\n  const avgDaily = item.json.average_daily_sales || 1;\n  const leadTime = item.json.lead_time_days || 7;\n  \n  // Updated logic: 2x lead time for better production inventory management\n  // First lead time: stock to last until delivery arrives\n  // Second lead time: buffer stock for next reorder cycle\n  const reorderQty = Math.ceil(avgDaily * (leadTime * 1.5) * safetyMargin);\n  \n  outputItems.push({\n    json: {\n      ...item.json,\n      reorder_qty: reorderQty\n    }\n  });\n}\nreturn outputItems;"
      },
      "typeVersion": 2
    },
    {
      "id": "7d04d71d-3d40-4575-b567-6e6bb8712e3a",
      "name": "매일 자정 실행",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -2520,
        -540
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 0 * * *"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "50c4223b-83d7-4204-a2ad-75b390b9298b",
      "name": "테이블에 구매 기록 생성",
      "type": "n8n-nodes-base.airtable",
      "position": [
        -2160,
        -280
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "apprZl1I4LgjwhSVf",
          "cachedResultUrl": "https://airtable.com/apprZl1I4LgjwhSVf",
          "cachedResultName": "Products Tables"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tbloIflYm8aNOy10m",
          "cachedResultUrl": "https://airtable.com/apprZl1I4LgjwhSVf/tbloIflYm8aNOy10m",
          "cachedResultName": "Purchase Orders"
        },
        "columns": {
          "value": {
            "status": "Pending",
            "quantity": "={{ $json.reorder_qty }}",
            "product_id": "={{ $json.product_id }}",
            "supplier_id": "={{ $json.supplier_id }}",
            "Product Name": "={{ $json.product_name }}",
            "Supplier Email": "={{ $json.supplier_email }}"
          },
          "schema": [
            {
              "id": "po_number",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "po_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "quantity",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "quantity",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "supplier_id",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "supplier_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Supplier Email",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Supplier Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "status",
              "type": "options",
              "display": true,
              "options": [
                {
                  "name": "Pending",
                  "value": "Pending"
                },
                {
                  "name": "Sent",
                  "value": "Sent"
                },
                {
                  "name": "Delivered",
                  "value": "Delivered"
                }
              ],
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "date",
              "type": "dateTime",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "product_id",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "product_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Product Name",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Product Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "create"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "j2v4SdOKrSSYQlXT",
          "name": "Airtable Personal Access Token account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "87965ea3-6e2a-495d-a040-fcf15ba8bb2a",
      "name": "기록 검색",
      "type": "n8n-nodes-base.airtable",
      "position": [
        -2500,
        -280
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "apprZl1I4LgjwhSVf",
          "cachedResultUrl": "https://airtable.com/apprZl1I4LgjwhSVf",
          "cachedResultName": "Products Tables"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tbloIflYm8aNOy10m",
          "cachedResultUrl": "https://airtable.com/apprZl1I4LgjwhSVf/tbloIflYm8aNOy10m",
          "cachedResultName": "Purchase Orders"
        },
        "options": {},
        "operation": "search",
        "filterByFormula": "=AND({product_id} = '{{ $('Get Products with low stock').item.json.product_id }}', OR({status} = 'Pending', {status} = 'Sent'))"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "j2v4SdOKrSSYQlXT",
          "name": "Airtable Personal Access Token account"
        }
      },
      "typeVersion": 2.1,
      "alwaysOutputData": true
    },
    {
      "id": "18390f14-6622-4f6c-8c24-ec123c4a807e",
      "name": "중복 제품 주문 제거",
      "type": "n8n-nodes-base.code",
      "position": [
        -2340,
        -280
      ],
      "parameters": {
        "jsCode": "// Step 1: Get all low stock products with complete data\nconst lowStockProducts = $('Get Products with low stock').all();\nconst allProductIds = lowStockProducts.map(p => p.json.product_id);\n\n// Step 2: Get calculated reorder quantities from the first code node\nconst reorderData = $('Calculate Dynamic Re-order Quantity').all();\n\n// Step 3: Get supplier details (this should have the actual supplier info)\nconst supplierDetails = $('Get supplier Details for those low stock products').all();\n\n// Step 4: Get existing purchase orders from input\nconst existingPOs = $input.all();\nconst existingProductIds = existingPOs.map(po => po.json.product_id);\n\n// Step 5: Filter out products that already have active POs\nconst newProductIds = allProductIds.filter(pid => !existingProductIds.includes(pid));\n\n// Step 6: Build complete result with all required fields\nconst result = newProductIds.map(productId => {\n  // Find the original product data\n  const originalProduct = lowStockProducts.find(p => p.json.product_id === productId);\n  \n  // Find the calculated reorder quantity and supplier info from the first code node\n  let reorderQty = 0;\n  let supplierId = '';\n  const reorderInfo = reorderData.find(r => r.json.product_id === productId);\n  if (reorderInfo) {\n    reorderQty = reorderInfo.json.reorder_qty;\n    supplierId = reorderInfo.json.supplier_id;\n  } else {\n    // Fallback: try to match by index if product_id isn't available in reorder data\n    const productIndex = lowStockProducts.findIndex(p => p.json.product_id === productId);\n    if (productIndex >= 0 && reorderData[productIndex]) {\n      reorderQty = reorderData[productIndex].json.reorder_qty;\n      supplierId = reorderData[productIndex].json.supplier_id;\n    }\n  }\n  \n  // For supplier details, we need to match by supplier_id from the reorder data\n  // The supplier_id might be an array (linked record) or a string\n  const supplierRecordId = Array.isArray(supplierId) ? supplierId[0] : supplierId;\n  \n  // Find supplier details by matching the record ID or by product_id\n  // Try multiple ways to match supplier data\n  const supplierData = supplierDetails.find(s => \n    s.json.id === supplierRecordId || \n    s.json.supplier_id === supplierRecordId ||\n    s.json.product_id === productId\n  );\n  \n  return {\n    json: {\n      product_id: productId,\n      product_name: originalProduct?.json?.product_name || '',\n      reorder_qty: reorderQty,\n      supplier_id: supplierRecordId || '',\n      supplier_email: supplierData?.json?.email || \n                     supplierData?.json?.supplier_email || \n                     supplierData?.json?.contact_email ||\n                     supplierData?.json?.Email || ''\n    }\n  };\n});\n\nreturn result;"
      },
      "typeVersion": 2
    },
    {
      "id": "cc7b13bc-d8f8-4c26-b503-5d9a8fcfd010",
      "name": "스티키 노트",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2600,
        -980
      ],
      "parameters": {
        "width": 940,
        "height": 920,
        "content": "### 📦 **Automated Purchase Order Creation – n8n Workflow**\n\nThis n8n automation checks products with low stock every night, calculates smart reorder quantities, avoids duplicate POs, and creates fresh purchase orders automatically.\n\n**✅ Steps:**\n\n1. **Run Every Midnight** – Scheduled daily trigger.\n2. **Get Products with Low Stock** – Fetch products below reorder threshold from Airtable.\n3. **Get Supplier Details** – Fetch related supplier info.\n4. **Calculate Dynamic Reorder Quantity** – Uses average daily sales × lead time × safety margin.\n5. **Search Existing POs** – Checks if there are active pending/sent orders.\n6. **Remove Duplicate Product Orders** – Filters out products already covered by existing POs.\n7. **Create Purchase Records** – Generates new purchase order records in Airtable with supplier email, product name, reorder quantity, etc.\n\n⚙ **Fully automated daily process** — keeps your stock healthy and your suppliers notified."
      },
      "typeVersion": 1
    },
    {
      "id": "790b9e2e-63fb-4d15-b0e9-47d1ab6dfdd2",
      "name": "일정 트리거",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -1360,
        -520
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 1 * * *"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "93b3ea8a-5b0a-41b6-863c-1c78bc6ec59d",
      "name": "대기 중인 구매 오더 조회",
      "type": "n8n-nodes-base.airtable",
      "position": [
        -1120,
        -520
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "apprZl1I4LgjwhSVf",
          "cachedResultUrl": "https://airtable.com/apprZl1I4LgjwhSVf",
          "cachedResultName": "Products Tables"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tbloIflYm8aNOy10m",
          "cachedResultUrl": "https://airtable.com/apprZl1I4LgjwhSVf/tbloIflYm8aNOy10m",
          "cachedResultName": "Purchase Orders"
        },
        "options": {},
        "operation": "search",
        "filterByFormula": "={status} = 'Pending'"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "j2v4SdOKrSSYQlXT",
          "name": "Airtable Personal Access Token account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "4ba6d12d-cbe6-418e-a9bb-102f54451b03",
      "name": "공급업체별 제품 그룹화",
      "type": "n8n-nodes-base.code",
      "position": [
        -900,
        -520
      ],
      "parameters": {
        "jsCode": "// Group purchase orders by supplier\nconst groupedOrders = {};\n\nfor (const item of $input.all()) {\n  const supplierId = item.json.supplier_id;\n  const supplierEmail = item.json[\"Supplier Email\"];\n  const airtableRecordId = item.json.id; // capture Airtable record ID\n\n  if (!groupedOrders[supplierId]) {\n    groupedOrders[supplierId] = {\n      supplier_id: supplierId,\n      supplier_email: supplierEmail,\n      orders: [],\n      total_items: 0,\n      po_summary: [],\n      record_ids: [] // store PO record IDs to update later\n    };\n  }\n\n  const productName = item.json.product_name || item.json[\"Product Name\"] || item.json.product_id || \"Unknown Product\";\n\n  groupedOrders[supplierId].orders.push({\n    product_name: productName,\n    quantity: item.json.quantity,\n    product_id: item.json.product_id,\n    airtable_record_id: airtableRecordId\n  });\n\n  groupedOrders[supplierId].record_ids.push(airtableRecordId);\n  groupedOrders[supplierId].total_items += item.json.quantity;\n  groupedOrders[supplierId].po_summary.push(`${productName} (Qty: ${item.json.quantity})`);\n}\n\n// Helper function to create single-line HTML email body\nconst createHTMLBody = (supplier) => {\n  const tableRows = supplier.orders.map(order =>\n    `<tr><td style=\"padding:8px;border-bottom:1px solid #ddd;\">${order.product_name}</td><td style=\"padding:8px;border-bottom:1px solid #ddd;text-align:center;\">${order.product_id}</td><td style=\"padding:8px;border-bottom:1px solid #ddd;text-align:center;\">${order.quantity}</td></tr>`\n  ).join('');\n\n  return `<html><body style=\"font-family:Arial,sans-serif;line-height:1.6;color:#333;\"><div style=\"max-width:600px;margin:0 auto;padding:20px;\"><h2 style=\"color:#2c3e50;border-bottom:2px solid #3498db;padding-bottom:10px;\">Purchase Order Request</h2><p>Dear Supplier,</p><p>We hope this email finds you well. Please prepare the following items for delivery:</p><table style=\"width:100%;border-collapse:collapse;margin:20px 0;box-shadow:0 2px 4px rgba(0,0,0,0.1);\"><thead><tr style=\"background-color:#3498db;color:white;\"><th style=\"padding:12px;text-align:left;\">Product Name</th><th style=\"padding:12px;text-align:center;\">Product ID</th><th style=\"padding:12px;text-align:center;\">Quantity</th></tr></thead><tbody>${tableRows}</tbody></table><div style=\"background-color:#f8f9fa;padding:15px;border-radius:5px;margin:20px 0;\"><p style=\"margin:5px 0;\"><strong>📦 Total Products:</strong> ${supplier.orders.length}</p><p style=\"margin:5px 0;\"><strong>📊 Total Quantity:</strong> ${supplier.total_items}</p><p style=\"margin:5px 0;\"><strong>🏷️ Supplier ID:</strong> ${supplier.supplier_id}</p></div><p>Please confirm receipt of this order and provide an estimated delivery date.</p><p style=\"margin-top:30px;\">Thank you for your prompt attention to this order.<br><strong>Inventory Management Team</strong></p><hr style=\"border:none;border-top:1px solid #ddd;margin:30px 0;\"><p style=\"font-size:12px;color:#666;text-align:center;\">This is an automated message. Please do not reply to this email.</p></div></body></html>`;\n};\n\nreturn Object.values(groupedOrders).map(supplier => ({\n  json: {\n    supplier_id: supplier.supplier_id,\n    supplier_email: supplier.supplier_email,\n    total_products: supplier.orders.length,\n    total_quantity: supplier.total_items,\n    order_details: supplier.orders,\n    po_summary: supplier.po_summary,\n    record_ids: supplier.record_ids, // include record IDs for updating status later\n    email_subject: `🛒 Purchase Order - ${supplier.orders.length} Product${supplier.orders.length > 1 ? 's' : ''} (${supplier.total_items} items) - ${supplier.supplier_id}`,\n    email_body_html: createHTMLBody(supplier),\n    email_body_text: `Dear Supplier,\\n\\nPlease prepare the following items:\\n\\n${supplier.po_summary.join('\\n')}\\n\\nTotal Products: ${supplier.orders.length}\\nTotal Items: ${supplier.total_items}\\nSupplier ID: ${supplier.supplier_id}\\n\\nThank you!\\n\\nInventory Management Team`\n  }\n}));\n"
      },
      "typeVersion": 2
    },
    {
      "id": "ce853473-aa77-4215-a7e2-4b584f6b5986",
      "name": "PO의 기록 ID 조회",
      "type": "n8n-nodes-base.code",
      "position": [
        -720,
        -400
      ],
      "parameters": {
        "jsCode": "const items = $input.all();\nconst updates = [];\n\nfor (const item of items) {\n  const recordIds = item.json.record_ids || [];\n  for (const id of recordIds) {\n    updates.push({\n      json: {\n        id,\n        status: 'Sent'\n      }\n    });\n  }\n}\n\nreturn updates;\n"
      },
      "typeVersion": 2
    },
    {
      "id": "275e3674-127b-4acf-92cd-c554b61239f9",
      "name": "PO 상태를 '전송됨'으로 업데이트",
      "type": "n8n-nodes-base.airtable",
      "position": [
        -500,
        -540
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "apprZl1I4LgjwhSVf",
          "cachedResultUrl": "https://airtable.com/apprZl1I4LgjwhSVf",
          "cachedResultName": "Products Tables"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tbloIflYm8aNOy10m",
          "cachedResultUrl": "https://airtable.com/apprZl1I4LgjwhSVf/tbloIflYm8aNOy10m",
          "cachedResultName": "Purchase Orders"
        },
        "columns": {
          "value": {
            "id": "={{ $json.id }}",
            "status": "Sent"
          },
          "schema": [
            {
              "id": "id",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "id",
              "defaultMatch": true
            },
            {
              "id": "po_number",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "po_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "quantity",
              "type": "number",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "quantity",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "supplier_id",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "supplier_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Supplier Email",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Supplier Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "status",
              "type": "options",
              "display": true,
              "options": [
                {
                  "name": "Pending",
                  "value": "Pending"
                },
                {
                  "name": "Sent",
                  "value": "Sent"
                },
                {
                  "name": "Delivered",
                  "value": "Delivered"
                }
              ],
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "date",
              "type": "dateTime",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "product_id",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "product_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Product Name",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Product Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "id"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "upsert"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "j2v4SdOKrSSYQlXT",
          "name": "Airtable Personal Access Token account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "fd03a9df-1892-465b-9dc5-6c13cb2c1f16",
      "name": "스티키 노트1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1420,
        -980
      ],
      "parameters": {
        "width": 1140,
        "height": 920,
        "content": "## 📦 n8n Automation: Daily PO Email & Status Sync\n\n- **Runs at:** 01:00 AM every day (`0 1 * * *`)\n- **Step 1:** Fetches all `Pending` purchase orders from Airtable\n- **Step 2:** Groups orders by supplier, builds HTML emails summarizing products and quantities\n- **Step 3:** Sends emails to suppliers via Brevo (SendInBlue)\n- **Step 4:** Updates each purchase order’s status to `Sent` in Airtable\n\nKeeps your suppliers updated daily and automates your purchase order workflow.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "e725f7f0-85a1-4cec-af79-fee429ff2667",
      "name": "이메일로 공급업체에 PO 전송",
      "type": "n8n-nodes-base.sendInBlue",
      "position": [
        -700,
        -700
      ],
      "parameters": {
        "sender": "abhiram.bvb@gmail.com",
        "subject": "={{ $json.email_subject }}",
        "sendHTML": true,
        "htmlContent": "={{ $json.email_body_html }}",
        "receipients": "={{ $json.supplier_email }}",
        "requestOptions": {},
        "additionalFields": {}
      },
      "credentials": {
        "sendInBlueApi": {
          "id": "ysEmyjdU0adBBOqN",
          "name": "Brevo account"
        }
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "87965ea3-6e2a-495d-a040-fcf15ba8bb2a": {
      "main": [
        [
          {
            "node": "18390f14-6622-4f6c-8c24-ec123c4a807e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "790b9e2e-63fb-4d15-b0e9-47d1ab6dfdd2": {
      "main": [
        [
          {
            "node": "93b3ea8a-5b0a-41b6-863c-1c78bc6ec59d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7d04d71d-3d40-4575-b567-6e6bb8712e3a": {
      "main": [
        [
          {
            "node": "fe401179-5a8b-4232-b148-9bf4d96ceb9b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ce853473-aa77-4215-a7e2-4b584f6b5986": {
      "main": [
        [
          {
            "node": "275e3674-127b-4acf-92cd-c554b61239f9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fe401179-5a8b-4232-b148-9bf4d96ceb9b": {
      "main": [
        [
          {
            "node": "46bfdc76-b244-41a9-a686-09c8eb140968",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4ba6d12d-cbe6-418e-a9bb-102f54451b03": {
      "main": [
        [
          {
            "node": "e725f7f0-85a1-4cec-af79-fee429ff2667",
            "type": "main",
            "index": 0
          },
          {
            "node": "ce853473-aa77-4215-a7e2-4b584f6b5986",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e725f7f0-85a1-4cec-af79-fee429ff2667": {
      "main": [
        []
      ]
    },
    "18390f14-6622-4f6c-8c24-ec123c4a807e": {
      "main": [
        [
          {
            "node": "50c4223b-83d7-4204-a2ad-75b390b9298b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "50c4223b-83d7-4204-a2ad-75b390b9298b": {
      "main": [
        []
      ]
    },
    "836a5efb-0cad-4508-8703-911241f0b847": {
      "main": [
        [
          {
            "node": "87965ea3-6e2a-495d-a040-fcf15ba8bb2a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "93b3ea8a-5b0a-41b6-863c-1c78bc6ec59d": {
      "main": [
        [
          {
            "node": "4ba6d12d-cbe6-418e-a9bb-102f54451b03",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "46bfdc76-b244-41a9-a686-09c8eb140968": {
      "main": [
        [
          {
            "node": "836a5efb-0cad-4508-8703-911241f0b847",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

이 워크플로우를 어떻게 사용하나요?

위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.

이 워크플로우는 어떤 시나리오에 적합한가요?

중급 - 문서 추출

유료인가요?

이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
중급
노드 수15
카테고리1
노드 유형5
난이도 설명

일정 경험을 가진 사용자를 위한 6-15개 노드의 중간 복잡도 워크플로우

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34