8
n8n 中文网amn8n.com

使用Google Vision OCR、Telegram和Google Sheets的自动化财务报告

高级

这是一个Invoice Processing, AI Summarization领域的自动化工作流,包含 31 个节点。主要使用 If, Set, Code, SplitOut, Telegram 等节点。 使用Google Vision OCR、AI和Telegram处理收据到Google表格

前置要求
  • Telegram Bot Token
  • 可能需要目标 API 的认证凭证
  • Google Sheets API 凭证
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "CvIOr50bDG2t7vHO",
  "meta": {
    "instanceId": "0d045f8fe3802ff2be0bb9a9ea445ee6c9ed61973377effe00767e483681e2f4",
    "templateCredsSetupCompleted": true
  },
  "name": "使用 Google Vision OCR、Telegram 和 Google Sheets 的自动化财务报告",
  "tags": [],
  "nodes": [
    {
      "id": "1e4b5f2c-827a-40da-b0b5-cf6405d3d41c",
      "name": "Telegram 触发器",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        -4080,
        -320
      ],
      "webhookId": "378bae18-abab-4f4a-8231-306db21c182b",
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "YOUR_TELEGRAM_BOT_TOKEN",
          "name": "Laporan Keuangan"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "4a22cbd2-7888-4098-a9d0-8fc4726ac537",
      "name": "条件判断",
      "type": "n8n-nodes-base.if",
      "position": [
        -3860,
        -320
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "a4be3cda-799d-4413-9946-a837832e5e3d",
              "operator": {
                "type": "boolean",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.message.photo }}",
              "rightValue": ""
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "d895590f-7790-47f1-af15-a18fc8b51492",
      "name": "获取路径",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -3280,
        -440
      ],
      "parameters": {
        "url": "=https://api.telegram.org/bot{{ $json.telegramToken }}/getFile?file_id={{ $('Telegram Trigger').item.json.message.photo.slice(-1)[0].file_id }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "aa36a70e-f6a5-495c-8ae4-83fe3dc5ea60",
      "name": "获取 URL",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -3100,
        -440
      ],
      "parameters": {
        "url": "=https://api.telegram.org/file/bot{{ $('Set Telegram Token').item.json.telegramToken }}/{{ $json.result.file_path }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "ee19459b-b8f0-4e9f-940f-3c165898f744",
      "name": "设置 Vision API",
      "type": "n8n-nodes-base.set",
      "position": [
        -2720,
        -440
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "586cf442-13be-4996-9824-366e20ab864e",
              "name": "visionAPI",
              "type": "string",
              "value": "YOUR_GOOGLE_VISION_API_KEY"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "cf01bb03-cb8d-467b-b6e9-c8f8c3127ac1",
      "name": "HTTP 请求",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -2500,
        -440
      ],
      "parameters": {
        "url": "=https://vision.googleapis.com/v1/images:annotate?key={{ $json.visionAPI }}",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"requests\": [\n    {\n      \"image\": {\n        \"content\": \"{{ $('Code').item.json.base64 }}\"\n      },\n      \"features\": [\n        {\n          \"type\": \"TEXT_DETECTION\"\n        }\n      ]\n    }\n  ]\n}\n",
        "sendBody": true,
        "specifyBody": "json"
      },
      "typeVersion": 4.2
    },
    {
      "id": "a8137a20-d135-4bb4-a010-dd77bb390d41",
      "name": "代码",
      "type": "n8n-nodes-base.code",
      "position": [
        -2920,
        -440
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "// Ini untuk Function Item node\nconst base64 = item.binary.data.data; // 'data' adalah nama binary\nreturn {\n  json: {\n    base64\n  }\n};\n"
      },
      "typeVersion": 2
    },
    {
      "id": "b8cc498e-3716-4cd2-8775-11fdbfb2d7f0",
      "name": "基础 LLM 链",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        -2280,
        -440
      ],
      "parameters": {
        "text": "={{ $json.responses[0].fullTextAnnotation }}",
        "batching": {},
        "messages": {
          "messageValues": [
            {
              "message": "=You are a professional accountant experienced in preparing financial reports and classifying expenses into appropriate categories.\nYou will receive input data extracted via OCR that needs to be parsed and structured.\n\nInstructions:\nAlways generate the output using the same language as the input.\nAnalyze the input and extract relevant fields such as:\nDate\nCategory\nStore Name\nStore Address\nInvoice Number\nProduct Name\nQuantity\nUnit Price\nTotal Amount\nIf any data is missing or not detected, return: 'not found' for text fields and 0 for numerical values\nIf the date is not present, use current date."
            }
          ]
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.7
    },
    {
      "id": "1ab8b159-83c8-41c1-a714-c459b2967d05",
      "name": "OpenRouter 聊天模型",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        -2280,
        -240
      ],
      "parameters": {
        "model": "google/gemini-2.0-flash-exp:free",
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "id": "YOUR_OPENROUTER_API_KEY",
          "name": "OpenRouter ASNM"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "542b2f21-8a8f-4110-b0d1-c02642fe5809",
      "name": "结构化输出解析器",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -2120,
        -240
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"Date\": \"2025-07-07\",\n  \"Id\": \"4821-INV-001234\",\n  \"Category\": \"Auto-generated category\",\n  \"Vendor\": \"Vendor Name\",\n  \"Vendor Address\": \"Vendor Address\",\n  \"Invoice Number\": \"INV-001234\",\n  \"Items\": [\n    {\n      \"Product\": \"Product 1\",\n      \"Quantity\": 2,\n      \"Unit Price\": 10000,\n      \"Total\": 20000\n    },\n    {\n      \"Product\": \"Product 2\",\n      \"Quantity\": 1,\n      \"Unit Price\": 20000,\n      \"Total\": 20000\n    },\n    {\n      \"Product\": \"Product 3\",\n      \"Quantity\": 3,\n      \"Unit Price\": 12000,\n      \"Total\": 36000\n    }\n  ]\n}\n"
      },
      "typeVersion": 1.3
    },
    {
      "id": "6dd87457-4afd-41ef-b0ee-0ddfff83f94a",
      "name": "在表格中追加或更新行",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1480,
        -440
      ],
      "parameters": {
        "columns": {
          "value": {
            "Date": "={{ $('Code1').item.json.output.Date }}",
            "Total": "={{ $json.Total }}",
            "Vendor": "={{ $('Code1').item.json.output.Vendor }}",
            "Product": "={{ $json.Product }}",
            "Category": "={{ $('Code1').item.json.output.Category }}",
            "Quantity": "={{ $json.Quantity }}",
            "Unit Price": "={{ $json['Unit Price'] }}",
            "Invoice Number": "={{ $('Code1').item.json.output['Invoice Number'] }}",
            "Vendor Address": "={{ $('Code1').item.json.output['Vendor Address'] }}"
          },
          "schema": [
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Invoice Number",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Invoice Number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Category",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Category",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Vendor",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Vendor",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Vendor Address",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Vendor Address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Product",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Product",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Quantity",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Quantity",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Unit Price",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Unit Price",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Total",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Invoice Number"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "11oT95lKoGNFlZtV129ampaBNOxnnKAJnUn1fAlqYZvY"
        }
      },
      "executeOnce": false,
      "typeVersion": 4.6
    },
    {
      "id": "50783998-dd2e-4597-98e0-6f5e9892d69a",
      "name": "分离输出",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        -1680,
        -440
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "output.Items"
      },
      "typeVersion": 1
    },
    {
      "id": "a15f4030-bf82-439e-84b3-39752d2e9017",
      "name": "Basic LLM Chain1",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        -1920,
        20
      ],
      "parameters": {
        "text": "={{ $json.output }}",
        "batching": {},
        "messages": {
          "messageValues": [
            {
              "message": "=Please write the following transaction details neatly so that they are easy for users to understand. Display all items and the total purchase amount. Write in plain text without additional punctuation. Use emojis for greater interaction."
            }
          ]
        },
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "e18b01e4-d88f-4b89-aa24-8e1eeaccf70d",
      "name": "OpenRouter 聊天模型1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        -1920,
        220
      ],
      "parameters": {
        "model": "google/gemini-2.0-flash-exp:free",
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "e8754a00-1761-42b6-a768-489e21895044",
      "name": "发送文本消息",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -1560,
        20
      ],
      "webhookId": "6a62a6bb-f926-45e6-950e-18b09615c8f4",
      "parameters": {
        "text": "={{ $json.text }}",
        "chatId": "={{ $('Telegram Trigger').item.json.message.from.id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "6d0388c7-5995-463f-95e8-ea2f0ae3f22e",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -3520,
        100
      ],
      "parameters": {
        "text": "={{ $json.message.text }}",
        "options": {
          "systemMessage": "=You are a professional accountant skilled in financial reporting. You are currently having a conversation with {{ $json.message.from.first_name }}. Always use data to answer questions. Write in plain text without punctuation, and use emojis for greater interaction."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2
    },
    {
      "id": "64819421-164f-4b66-8f38-f12f30d67877",
      "name": "在 Google Sheets 中获取行",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        -3280,
        320
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "11oT95lKoGNFlZtV129ampaBNOxnnKAJnUn1fAlqYZvY"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "a4dcf0e8-bfb1-49d1-b198-eb578334accc",
      "name": "OpenRouter 聊天模型2",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        -3520,
        320
      ],
      "parameters": {
        "model": "google/gemini-2.0-flash-exp:free",
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "fb81aa66-2d80-42c6-b391-584097b42c02",
      "name": "发送短信1",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -3180,
        100
      ],
      "webhookId": "9c685b77-4e25-4182-83f4-decfc5e4c3ae",
      "parameters": {
        "text": "={{ $json.output }}",
        "chatId": "={{ $('Telegram Trigger').item.json.message.from.id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "d3d431c6-5492-4aa7-a814-eac634407391",
      "name": "简单记忆",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        -3440,
        320
      ],
      "parameters": {
        "sessionKey": "={{ $('Telegram Trigger').item.json.message.from.id }}",
        "sessionIdType": "customKey",
        "contextWindowLength": 10
      },
      "typeVersion": 1.3
    },
    {
      "id": "6e737840-75f2-4ef7-a108-f8a232d60a72",
      "name": "代码1",
      "type": "n8n-nodes-base.code",
      "position": [
        -1920,
        -440
      ],
      "parameters": {
        "jsCode": "function cleanNumber(n) {\n  return parseInt(n.toString().replace(/[.,]/g, '')) || 0;\n}\n\nconst items = $json.output.Items.map(item => ({\n  ...item,\n  Quantity: cleanNumber(item.Quantity),\n  \"Unit Price\": cleanNumber(item[\"Unit Price\"]),\n  Total: cleanNumber(item.Total),\n}));\n\nreturn {\n  json: {\n    output: {\n      ...$json.output,\n      Items: items\n    }\n  }\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "0a96b324-9e24-45e4-99cf-8b2822f91242",
      "name": "发送文本消息2",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -2500,
        -620
      ],
      "webhookId": "849284a7-a383-4bc7-b2d9-115bdd3a8c1e",
      "parameters": {
        "text": "Data is being processed . . .",
        "chatId": "={{ $('Telegram Trigger').item.json.message.from.id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "46f7fdaa-5fe3-49f1-8e1e-9e8cd0ac559a",
      "name": "设置 Telegram 令牌",
      "type": "n8n-nodes-base.set",
      "position": [
        -3520,
        -440
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "586cf442-13be-4996-9824-366e20ab864e",
              "name": "telegramToken",
              "type": "string",
              "value": "YOUR_TELEGRAM_BOT_TOKEN"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "119c9b9d-26cb-4578-bc5f-6ef756fd08c7",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -4720,
        -760
      ],
      "parameters": {
        "color": 6,
        "width": 580,
        "height": 1020,
        "content": "## 使用 Google Vision OCR、Telegram 和 Google Sheets 的自动化财务报告"
      },
      "typeVersion": 1
    },
    {
      "id": "500572a3-af19-4d22-87c2-99a16803ada1",
      "name": "便签1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3580,
        -620
      ],
      "parameters": {
        "width": 220,
        "height": 340,
        "content": "将 Telegram 机器人 API 令牌存储为变量 (telegram Token),以便后续节点无需重复硬编码即可使用。"
      },
      "typeVersion": 1
    },
    {
      "id": "ea7c2f1c-1667-43c5-a32a-018ee7fa693b",
      "name": "便签2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3300,
        -660
      ],
      "parameters": {
        "color": 4,
        "width": 500,
        "height": 380,
        "content": "- 通过访问 getFile 端点从 Telegram 检索文件路径(图像)。需要此路径以便我们可以从 Telegram 服务器下载图像文件。"
      },
      "typeVersion": 1
    },
    {
      "id": "41fb4adb-7a5a-418d-a4f6-ee37ccf67ec0",
      "name": "便签3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2760,
        -880
      ],
      "parameters": {
        "color": 6,
        "width": 400,
        "height": 600,
        "content": "- 将 Google Vision API 密钥保存到名为 visionAPI 的变量中。此变量稍后将用于动态调用 OCR 端点,而无需直接在 URL 中指定 API 密钥。"
      },
      "typeVersion": 1
    },
    {
      "id": "c6508f4d-0ad4-4d93-939d-170a322d1f61",
      "name": "便签4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2320,
        -560
      ],
      "parameters": {
        "color": 7,
        "width": 320,
        "height": 480,
        "content": "使用 LLM(语言模型)处理来自 Google Vision API 的 OCR 文本 (fullTextAnnotation) 并将其转换为结构化数据。"
      },
      "typeVersion": 1
    },
    {
      "id": "45b230e7-a528-4568-a834-c14f6c15b492",
      "name": "便利贴5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1940,
        -640
      ],
      "parameters": {
        "color": 4,
        "width": 640,
        "height": 380,
        "content": "- 清理数字数据中的字符,例如句点或逗号(收据定价格式中常见),然后将它们转换为整数。"
      },
      "typeVersion": 1
    },
    {
      "id": "29c7a276-4ed9-4b44-88eb-5e4bf67f704d",
      "name": "便签 6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1940,
        -100
      ],
      "parameters": {
        "width": 640,
        "height": 480,
        "content": "- 将解析后的交易数据转换为人类可读的文本摘要。"
      },
      "typeVersion": 1
    },
    {
      "id": "87ac24f9-94ef-4a50-935e-a67d2d79a950",
      "name": "便签 7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3540,
        0
      ],
      "parameters": {
        "color": 2,
        "width": 500,
        "height": 480,
        "content": "提供与用户在 Telegram 上基于文本的交互功能,此代理被设计为财务助手,根据先前记录在 Google Sheets 中的交易数据回答用户问题。"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "c939f754-70a0-4f7e-9f8f-7811cf218ce8",
  "connections": {
    "If": {
      "main": [
        [
          {
            "node": "Set Telegram Token",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code": {
      "main": [
        [
          {
            "node": "Set Vision API",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code1": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get URL": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "Send a text message1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Path": {
      "main": [
        [
          {
            "node": "Get URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Append or update row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request": {
      "main": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "AI Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Set Vision API": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          },
          {
            "node": "Send a text message2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Basic LLM Chain": {
      "main": [
        [
          {
            "node": "Basic LLM Chain1",
            "type": "main",
            "index": 0
          },
          {
            "node": "Code1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Basic LLM Chain1": {
      "main": [
        [
          {
            "node": "Send a text message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Telegram Trigger": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Telegram Token": {
      "main": [
        [
          {
            "node": "Get Path",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Basic LLM Chain1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model2": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Get row(s) in sheet in Google Sheets": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

高级 - 发票处理, AI 摘要总结

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
高级
节点数量31
分类2
节点类型15
难度说明

适合高级用户,包含 16+ 个节点的复杂工作流

作者
Budi SJ

Budi SJ

@budisj

I’m a Product Designer who also works as an Automation Developer. With a background in product design and systems thinking, I build user-centered workflows. My focus is on helping teams and businesses work more productively through impactful automation systems.

外部链接
在 n8n.io 查看

分享此工作流