Google SheetsとQuickBooks経費自動化テンプレート

上級

これはInvoice Processing, Multimodal AI分野の自動化ワークフローで、16個のノードを含みます。主にIf, Set, SplitOut, Quickbooks, HttpRequestなどのノードを使用。 Google SheetsとQuickBooks経費自動化テンプレート

前提条件
  • ターゲットAPIの認証情報が必要な場合あり
  • Google Sheets API認証情報
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "meta": {
    "instanceId": "d6e2f2f655b1125bbcac14a4cac6d2e46c7a150e927f85fc96fdca1a6dc39e0e",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "4678f902-8b59-42f2-adab-f123ca1f637f",
      "name": "「ワークフロー実行」クリック時",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -16,
        192
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "5b68c737-5caa-4d36-b957-5b4458c759a8",
      "name": "QuickBooksでアクティブなベンダーを取得",
      "type": "n8n-nodes-base.quickbooks",
      "position": [
        880,
        0
      ],
      "parameters": {
        "filters": {},
        "resource": "vendor",
        "operation": "getAll",
        "returnAll": true
      },
      "credentials": {
        "quickBooksOAuth2Api": {
          "id": "zZyR3nZpTizUyR0u",
          "name": "QuickBooks n8n Sandbox"
        }
      },
      "executeOnce": true,
      "typeVersion": 1
    },
    {
      "id": "5f464de5-83b7-4fd2-9068-93422b2356bf",
      "name": "勘定科目表を取得",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        432,
        192
      ],
      "parameters": {
        "url": "=https://sandbox-quickbooks.api.intuit.com/v3/company/{{ $json.realmID }}/query",
        "options": {},
        "sendQuery": true,
        "authentication": "predefinedCredentialType",
        "queryParameters": {
          "parameters": [
            {
              "name": "query",
              "value": "select * from Account where active=true maxResults 500"
            },
            {
              "name": "minorversion",
              "value": "75"
            }
          ]
        },
        "nodeCredentialType": "quickBooksOAuth2Api"
      },
      "credentials": {
        "quickBooksOAuth2Api": {
          "id": "zZyR3nZpTizUyR0u",
          "name": "QuickBooks n8n Sandbox"
        }
      },
      "executeOnce": true,
      "typeVersion": 4.2
    },
    {
      "id": "0b295195-8e3b-4d64-b1ef-ca4dbfca84c9",
      "name": "勘定科目を分割",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        656,
        192
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "QueryResponse.Account"
      },
      "typeVersion": 1
    },
    {
      "id": "aaaa6cf5-8e29-42d1-a182-b4506dd73583",
      "name": "Google Sheetテンプレートに勘定科目を追加",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        880,
        192
      ],
      "parameters": {
        "columns": {
          "value": {
            "ID": "={{ $json.Id }}",
            "Name": "={{ $json.Name }}",
            "Account Type": "={{ $json.AccountType }}"
          },
          "schema": [
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ID",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Account Type",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Account Type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "ID"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 124163501,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1dmkXHeMghVp5AHrdyU1vrwjUHWNaoDfkk9UOuG-SNKI/edit#gid=124163501",
          "cachedResultName": "Accounts"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1dmkXHeMghVp5AHrdyU1vrwjUHWNaoDfkk9UOuG-SNKI/edit?usp=sharing"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "iNp7jBkCGXjTLqFd",
          "name": "Rosh's Personal Sheets Account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "a37448d0-6c95-4bf0-8504-3519abda9d49",
      "name": "QBOに経費を追加",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        880,
        384
      ],
      "parameters": {
        "url": "=https://sandbox-quickbooks.api.intuit.com/v3/company/{{ $('Set Realm ID for Custom API Call').item.json.realmID }}/purchase",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"PaymentType\": \"Cash\",\n  \"TxnDate\": \"{{ $json.Date.toDateTime('M/d/y').toFormat('yyyy-MM-dd') }}\",\n  \"PrivateNote\": \"{{ $json.Description }}\",\n  \"EntityRef\": {\n    \"value\": \"{{ $json['Vendor ID'] }}\"\n  },\n  \"AccountRef\": {\n    \"value\": \"{{ $json['Asset ID'] }}\"\n  },\n  \"Line\": [\n    {\n      \"DetailType\": \"AccountBasedExpenseLineDetail\",\n      \"Amount\": {{ $json.Total }},\n      \"AccountBasedExpenseLineDetail\": {\n        \"AccountRef\": {\n          \"value\": \"{{ $json['Expense ID'] }}\"\n        }\n      }\n    }\n  ]\n}\n",
        "sendBody": true,
        "sendQuery": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "queryParameters": {
          "parameters": [
            {
              "name": "minorversion",
              "value": "75"
            }
          ]
        },
        "nodeCredentialType": "quickBooksOAuth2Api"
      },
      "credentials": {
        "quickBooksOAuth2Api": {
          "id": "zZyR3nZpTizUyR0u",
          "name": "QuickBooks n8n Sandbox"
        }
      },
      "executeOnce": false,
      "typeVersion": 4.2
    },
    {
      "id": "b1ed3c64-f832-4822-ae8a-2bf04cd7dd01",
      "name": "Google Sheetsから新規ベンダーを取得",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        208,
        0
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1066861641,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1dmkXHeMghVp5AHrdyU1vrwjUHWNaoDfkk9UOuG-SNKI/edit#gid=1066861641",
          "cachedResultName": "Vendors"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1dmkXHeMghVp5AHrdyU1vrwjUHWNaoDfkk9UOuG-SNKI/edit?usp=sharing"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "iNp7jBkCGXjTLqFd",
          "name": "Rosh's Personal Sheets Account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "5ed5cff9-7c9a-48c0-90f7-fdb158e10983",
      "name": "Google Sheetテンプレートのベンダーを更新",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1104,
        0
      ],
      "parameters": {
        "columns": {
          "value": {
            "ID": "={{ $json.Id }}",
            "Name": "={{ $json.DisplayName }}"
          },
          "schema": [
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ID",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "ID"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1066861641,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1dmkXHeMghVp5AHrdyU1vrwjUHWNaoDfkk9UOuG-SNKI/edit#gid=1066861641",
          "cachedResultName": "Vendors"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1dmkXHeMghVp5AHrdyU1vrwjUHWNaoDfkk9UOuG-SNKI/edit?usp=sharing"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "iNp7jBkCGXjTLqFd",
          "name": "Rosh's Personal Sheets Account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "6de704e8-7007-4802-ac84-10f81ca21af3",
      "name": "新規経費取引を取得",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        432,
        384
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupColumn": "Transaction ID"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1dmkXHeMghVp5AHrdyU1vrwjUHWNaoDfkk9UOuG-SNKI/edit#gid=0",
          "cachedResultName": "Expenses"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1dmkXHeMghVp5AHrdyU1vrwjUHWNaoDfkk9UOuG-SNKI/edit?usp=sharing"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "iNp7jBkCGXjTLqFd",
          "name": "Rosh's Personal Sheets Account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "17d09d9c-028a-4ccd-b2d7-1fc269e7fcca",
      "name": "重複を削除",
      "type": "n8n-nodes-base.removeDuplicates",
      "position": [
        432,
        0
      ],
      "parameters": {
        "compare": "selectedFields",
        "options": {},
        "fieldsToCompare": "Name"
      },
      "typeVersion": 2,
      "alwaysOutputData": true
    },
    {
      "id": "ff8d137b-b491-49e4-b656-81896a6bed0e",
      "name": "空行を削除",
      "type": "n8n-nodes-base.if",
      "position": [
        656,
        384
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "2aa9700c-74c1-464a-bce8-beb2ce28c7da",
              "operator": {
                "type": "string",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $json['Transaction ID'] }}",
              "rightValue": ""
            },
            {
              "id": "481f12f7-e8d0-4c80-bb3c-c21850c8795c",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json.Vendor }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "da89ac36-ba2b-431f-b2ff-345951d90a45",
      "name": "Google Sheetsに取引IDを記録",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1104,
        288
      ],
      "parameters": {
        "columns": {
          "value": {
            "#": "={{ $('Remove Empties').item.json['#'] }}",
            "Transaction ID": "={{ $json.Purchase.Id }}"
          },
          "schema": [
            {
              "id": "#",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "#",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Description",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Vendor",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Vendor",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Asset Account",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Asset Account",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Expense Account",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Expense Account",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Transaction ID",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Transaction ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Message",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Message",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Vendor ID",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Vendor ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Asset ID",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Asset ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Expense ID",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Expense ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "#"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/10pdz8hvNsCWX6IogQ_Nyb2qlXmOHWtgsAH4EgAUKfSw/edit#gid=0",
          "cachedResultName": "Expenses"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/10pdz8hvNsCWX6IogQ_Nyb2qlXmOHWtgsAH4EgAUKfSw/edit?pli=1&gid=0#gid=0"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "iNp7jBkCGXjTLqFd",
          "name": "Rosh's Personal Sheets Account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "fb36bbce-7b08-4ec1-aeaf-4fbc409a3f4c",
      "name": "QuickBooksで新規ベンダーを作成",
      "type": "n8n-nodes-base.quickbooks",
      "onError": "continueRegularOutput",
      "position": [
        656,
        0
      ],
      "parameters": {
        "resource": "vendor",
        "operation": "create",
        "displayName": "={{ $json.Name }}",
        "additionalFields": {}
      },
      "credentials": {
        "quickBooksOAuth2Api": {
          "id": "zZyR3nZpTizUyR0u",
          "name": "QuickBooks n8n Sandbox"
        }
      },
      "executeOnce": false,
      "typeVersion": 1
    },
    {
      "id": "615ced03-6162-494f-9006-7aef2b8f10b6",
      "name": "カスタムAPI呼び出しのためのRealm IDを設定",
      "type": "n8n-nodes-base.set",
      "position": [
        208,
        288
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "df10e087-0f27-4d07-98ba-aee302ee5477",
              "name": "realmID",
              "type": "string",
              "value": ""
            }
          ]
        }
      },
      "executeOnce": true,
      "typeVersion": 3.4
    },
    {
      "id": "cd56254b-d062-40f0-87dc-f3c6d1bca8c3",
      "name": "エラーメッセージを記録",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1104,
        480
      ],
      "parameters": {
        "columns": {
          "value": {
            "#": "={{ $json['#'] }}",
            "Message": "={{ $json.error }}"
          },
          "schema": [
            {
              "id": "#",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "#",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Description",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Vendor",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Vendor",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Asset Account",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Asset Account",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Expense Account",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Expense Account",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Transaction ID",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Transaction ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Vendor ID",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Vendor ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Asset ID",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Asset ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Expense ID",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Expense ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Message",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Message",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "#"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/10pdz8hvNsCWX6IogQ_Nyb2qlXmOHWtgsAH4EgAUKfSw/edit#gid=0",
          "cachedResultName": "Expenses"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1dmkXHeMghVp5AHrdyU1vrwjUHWNaoDfkk9UOuG-SNKI/edit?usp=sharing"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "iNp7jBkCGXjTLqFd",
          "name": "Rosh's Personal Sheets Account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "cc3c8c70-63c7-4c48-bcd2-3c8321f7f489",
      "name": "付箋",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -800,
        -448
      ],
      "parameters": {
        "width": 660,
        "height": 2192,
        "content": "## Automatically Upload Expenses to QuickBooks from Google Sheets\n\n## What It Does\nThis n8n workflow template automates the process of uploading categorized expenses from Google Sheets into QuickBooks Online. It leverages your Google Sheets data to create expense entries in QuickBooks with minimal manual effort, streamlining the accounting process.\n\n## Prerequisites\n- **QuickBooks Online Credential**: Set up your QuickBooks Online connection in n8n for expense creation.\n- **Google Sheets Credential**: Set up your Google Sheets connection in n8n to read and write data.\n\n## How It Works\n1. **Refresh Google Sheets Data**: The workflow will first refresh the list of vendors and chart of accounts from your Google Sheets template.\n2. **Import Bank Transactions**: Open the provided Google Sheets template and copy-paste your transactions from your online banking CSV file.\n3. **Categorize Transactions**: Quickly categorize the transactions in Google Sheets, or assign this task to a team member.\n4. **Run the Workflow**: Once the transactions are categorized, run the workflow again, and each expense will be created automatically in QuickBooks Online.\n\n## Example Use Cases\n- **Small Business Owners**: Automatically track and upload monthly expenses to QuickBooks Online without manually entering data.\n- **Accountants**: Automate the transfer of bank transactions to QuickBooks, streamlining the financial process.\n- **Bookkeepers**: Quickly categorize and upload business expenses to QuickBooks with minimal effort.\n\n## Setup Instructions\n1. **Connect Your Google Sheets and QuickBooks Credentials**:  \n   - In n8n, connect your Google Sheets and QuickBooks accounts. Follow the credential setup instructions for both services.\n\n2. **Setup the Google Sheets Node**:  \n   - Link the specific Google Sheet that contains your expense data. Make sure the sheet includes the correct columns for transactions, vendors, and accounts.\n\n3. **Setup the QuickBooks Node**:  \n   - Configure the QuickBooks Online node to create expense entries in QuickBooks from the data in your Google Sheets.\n\n4. **Setup the HTTP Node for API Calls**:  \n   - Use the HTTP node to make custom API calls to QuickBooks\n\n5. **Configure the QuickBooks Realm ID**:  \n   - Obtain the QuickBooks Realm ID from your QuickBooks Online Developer account to use for custom API calls. This ensures the workflow targets the correct QuickBooks instance.\n\n## How to Use\n1. **Import Transactions**:  \n   - Copy and paste your bank transactions from the CSV into the provided Google Sheets template.\n\n2. **Categorize Transactions**:  \n   - Manually categorize the transactions in the sheet, or delegate this task to another person to ensure they’re correctly tagged (e.g., Utilities, Office Supplies, Travel).\n\n3. **Run the Workflow**:  \n   - Execute the workflow to automatically upload the categorized expenses into QuickBooks.\n\n4. **Verify in QuickBooks**:  \n   - After the workflow runs, log into QuickBooks Online to confirm the expenses have been created and categorized correctly.\n\n## Free Google Sheets Template\nTo get started quickly, download my **free Google Sheets template** that includes pre-configured sheets for bank transactions, vendors, and chart of accounts. This template will make it easier for you to import and categorize your expenses before running the n8n workflow.\n\n[Download the Free Google Sheets Template](https://docs.google.com/spreadsheets/d/1dmkXHeMghVp5AHrdyU1vrwjUHWNaoDfkk9UOuG-SNKI/edit?usp=sharing)\n\n## Customization Options\n- **Category Mapping**: Customize how categories in Google Sheets are mapped to QuickBooks expense types.\n- **Additional API Calls**: Add custom API calls if you need extra functionality, such as creating custom reports or syncing additional data.\n- **Notifications**: Configure email or Slack notifications to alert you when the expenses have been successfully uploaded.\n\n## Why It's Useful\n- **Time-Saving**: Automatically upload and categorize expenses in QuickBooks without needing to enter them manually.\n- **Error Reduction**: Minimize human error by automating the process of uploading and categorizing transactions.\n- **Efficiency**: Connects Google Sheets to QuickBooks, making it easy to manage expenses in one place without having to toggle between multiple apps.\n- **Accuracy**: Syncs data between Google Sheets and QuickBooks in a structured, automated way for consistent and reliable financial reporting.\n- **Flexibility**: Allow external users or lower-permission employees to categorize financial transactions without providing direct access to QBO\n"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "ff8d137b-b491-49e4-b656-81896a6bed0e": {
      "main": [
        [
          {
            "node": "a37448d0-6c95-4bf0-8504-3519abda9d49",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "17d09d9c-028a-4ccd-b2d7-1fc269e7fcca": {
      "main": [
        [
          {
            "node": "fb36bbce-7b08-4ec1-aeaf-4fbc409a3f4c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0b295195-8e3b-4d64-b1ef-ca4dbfca84c9": {
      "main": [
        [
          {
            "node": "aaaa6cf5-8e29-42d1-a182-b4506dd73583",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a37448d0-6c95-4bf0-8504-3519abda9d49": {
      "main": [
        [
          {
            "node": "da89ac36-ba2b-431f-b2ff-345951d90a45",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "cd56254b-d062-40f0-87dc-f3c6d1bca8c3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5f464de5-83b7-4fd2-9068-93422b2356bf": {
      "main": [
        [
          {
            "node": "0b295195-8e3b-4d64-b1ef-ca4dbfca84c9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6de704e8-7007-4802-ac84-10f81ca21af3": {
      "main": [
        [
          {
            "node": "ff8d137b-b491-49e4-b656-81896a6bed0e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fb36bbce-7b08-4ec1-aeaf-4fbc409a3f4c": {
      "main": [
        [
          {
            "node": "5b68c737-5caa-4d36-b957-5b4458c759a8",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "5b68c737-5caa-4d36-b957-5b4458c759a8": {
      "main": [
        [
          {
            "node": "5ed5cff9-7c9a-48c0-90f7-fdb158e10983",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "615ced03-6162-494f-9006-7aef2b8f10b6": {
      "main": [
        [
          {
            "node": "5f464de5-83b7-4fd2-9068-93422b2356bf",
            "type": "main",
            "index": 0
          },
          {
            "node": "6de704e8-7007-4802-ac84-10f81ca21af3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b1ed3c64-f832-4822-ae8a-2bf04cd7dd01": {
      "main": [
        [
          {
            "node": "17d09d9c-028a-4ccd-b2d7-1fc269e7fcca",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4678f902-8b59-42f2-adab-f123ca1f637f": {
      "main": [
        [
          {
            "node": "b1ed3c64-f832-4822-ae8a-2bf04cd7dd01",
            "type": "main",
            "index": 0
          },
          {
            "node": "615ced03-6162-494f-9006-7aef2b8f10b6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "aaaa6cf5-8e29-42d1-a182-b4506dd73583": {
      "main": [
        []
      ]
    },
    "5ed5cff9-7c9a-48c0-90f7-fdb158e10983": {
      "main": [
        []
      ]
    }
  }
}
よくある質問

このワークフローの使い方は?

上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。

このワークフローはどんな場面に適していますか?

上級 - 請求書処理, マルチモーダルAI

有料ですか?

このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。

ワークフロー情報
難易度
上級
ノード数16
カテゴリー2
ノードタイプ9
難易度説明

上級者向け、16ノード以上の複雑なワークフロー

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34