8
n8n 한국어amn8n.com

Google Sheets에서 Google Docs로 자동 청구서 생성기

중급

이것은Document Extraction분야의자동화 워크플로우로, 11개의 노드를 포함합니다.주로 Merge, GoogleDocs, GoogleSheets, ManualTrigger 등의 노드를 사용하며. Google Sheets에서 Google Docs로의 자동 인voice 생성기

사전 요구사항
  • Google Sheets API 인증 정보

카테고리

워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "meta": {
    "instanceId": "efb474b59b0341d7791932605bd9ff04a6c7ed9941fdd53dc4a2e4b99a6f9439",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "ede2cb2e-bb56-4870-94a4-c27c78509124",
      "name": "'워크플로 실행' 클릭 시",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -420,
        560
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "85ff7b59-2c72-4846-953a-46ab1f50fee8",
      "name": "Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -240,
        880
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MHVZRVo5aPs5VqRXk7lBNPVlZ2gilKqZ8J9yeg4taW4/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1MHVZRVo5aPs5VqRXk7lBNPVlZ2gilKqZ8J9yeg4taW4",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MHVZRVo5aPs5VqRXk7lBNPVlZ2gilKqZ8J9yeg4taW4/edit?usp=drivesdk",
          "cachedResultName": "Invoices"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "WsgMg14OYooIdvn7",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "e92eee15-18b1-4851-92ae-985d666b1857",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        320,
        880
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineAll"
      },
      "typeVersion": 3.2
    },
    {
      "id": "736b3314-daf7-4bd2-82e0-9e23018091b5",
      "name": "Get Invoice Template",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        100,
        800
      ],
      "parameters": {
        "operation": "get",
        "documentURL": "18n0HTqabDldi7fVbhbI1aG12qbFWsjyTXdduwDDOUu8"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "id": "iOuZirVwbwI3E51t",
          "name": "Google Docs account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "97b2ea4d-4904-49f5-bb1e-ae7e71156640",
      "name": "Create New Doc",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        120,
        980
      ],
      "parameters": {
        "title": "=Invoice:  {{ $json.Invoice }}",
        "folderId": "1TnDibwPPPUm3VbmETiqWDVhtaUTLJ6mn"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "id": "iOuZirVwbwI3E51t",
          "name": "Google Docs account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "86fb16bb-484b-44df-b4f5-25fde65a6c7f",
      "name": "Insert Content into Doc",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        600,
        540
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "text": "={{ $json.content }}",
              "action": "insert"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ $json.id }}"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "id": "iOuZirVwbwI3E51t",
          "name": "Google Docs account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "89810e9d-685e-4007-be83-0686ea779163",
      "name": "Input Invoice Details",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        800,
        940
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "text": "=FromCompany#",
              "action": "replaceAll",
              "replaceText": "={{ $('Google Sheets').item.json['Company From'] }}"
            },
            {
              "text": "ToCompany#",
              "action": "replaceAll",
              "replaceText": "={{ $('Google Sheets').item.json['Company To'] }}"
            },
            {
              "text": "Terms#",
              "action": "replaceAll",
              "replaceText": "={{ $('Google Sheets').item.json.Terms }}"
            },
            {
              "text": "Invoice#",
              "action": "replaceAll",
              "replaceText": "={{ $('Google Sheets').item.json.Invoice }}"
            },
            {
              "text": "Description#",
              "action": "replaceAll",
              "replaceText": "={{ $('Google Sheets').item.json.Description }}"
            },
            {
              "text": "Amount#",
              "action": "replaceAll",
              "replaceText": "={{ $('Google Sheets').item.json.Amount }}\n"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ $('Merge').item.json.id }}"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "id": "iOuZirVwbwI3E51t",
          "name": "Google Docs account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "d9d22f6b-bd25-4af5-b460-c76e9a9c527b",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -460,
        -60
      ],
      "parameters": {
        "color": 3,
        "width": 480,
        "height": 1220,
        "content": "### Step 1: **Manual Trigger**\n- Node: `When clicking ‘Execute workflow’`\n- Use this to manually execute the workflow during testing or on-demand runs.\n\n---\n\n### Step 2: **Google Sheets — Load Invoice Data**\n- Node: `Google Sheets`\n- Pulls rows from this [Google Sheet](https://docs.google.com/spreadsheets/d/1MHVZRVo5aPs5VqRXk7lBNPVlZ2gilKqZ8J9yeg4taW4/edit#gid=0)  \n- **Sheet Expectations**:\n  - Columns: `Company From`, `Company To`, `Terms`, `Invoice`, `Description`, `Amount`\n\n**Required Credentials**:\n- **Google Sheets OAuth2**  \n  Follow these steps:\n  1. Go to [Google Cloud Console](https://console.cloud.google.com/)\n  2. Enable the **Google Sheets API**\n  3. Create OAuth 2.0 credentials\n  4. Add redirect URI:  \n     ```\n     https://api.n8n.cloud/oauth2-credential/callback\n     ```"
      },
      "typeVersion": 1
    },
    {
      "id": "ad368f70-57a1-4693-9763-d7d2b8980efe",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        40,
        -60
      ],
      "parameters": {
        "color": 4,
        "width": 460,
        "height": 1220,
        "content": "### ### Step 3: `Get Invoice Template` — Load Google Doc  \nLoads a static Google Docs template containing placeholder values.\n\n- 🧾 **Template URL**: [Copy This Template](https://docs.google.com/document/d/18n0HTqabDldi7fVbhbI1aG12qbFWsjyTXdduwDDOUu8/edit)\n- **Required Placeholders** in the document:\n  ```\n  FromCompany#\n  ToCompany#\n  Terms#\n  Invoice#\n  Description#\n  Amount#\n  ```\n\n> 🔑 **Credentials Required**:  \n> Connect to **Google Docs OAuth2 API** in n8n.\n\n---\n\n### ### Step 4: `Create New Doc` — Make Invoice File  \nCreates a new Google Doc by duplicating the invoice template.\n\n- **Title Format**: `Invoice: {{ $json.Invoice }}`\n- **Destination Folder ID**: `1TnDibwPPPUm3VbmETiqWDVhtaUTLJ6mn`  \n  *(You can change this to your own Google Drive folder)*\n\n> 🔐 Make sure your Google Docs credential has write access to this folder.\n\n---\n\n### ### Step 5: `Merge` — Combine Data  \nMerges the loaded document and spreadsheet row together for downstream updates.\n\n---"
      },
      "typeVersion": 1
    },
    {
      "id": "a17e1690-a974-4552-88d2-5d87b89f5045",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        520,
        -60
      ],
      "parameters": {
        "color": 5,
        "width": 480,
        "height": 1220,
        "content": "### ### Step 7: `Input Invoice Details` — Replace Fields  \nUses Google Docs API to replace all placeholders from the original template with the actual values.\n\n**Replacements:**\n\n| Placeholder    | Replaced With                |\n|----------------|------------------------------|\n| FromCompany#   | `Company From` from sheet     |\n| ToCompany#     | `Company To` from sheet       |\n| Terms#         | `Terms` from sheet            |\n| Invoice#       | `Invoice` number              |\n| Description#   | `Description` of service      |\n| Amount#        | `Amount` of invoice           |\n\n---\n\n## 📤 Final Output\n\nEach row from the Google Sheet results in a completed, branded Google Doc invoice stored in your Drive.\n\n---"
      },
      "typeVersion": 1
    },
    {
      "id": "9a875848-3be3-4763-8c08-05c2db7d4601",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -460,
        -180
      ],
      "parameters": {
        "width": 1460,
        "height": 100,
        "content": "## 💬 Need Help?\n📧 rbreen@ynteractive.com\n🔗 [LinkedIn](https://www.linkedin.com/in/robert-breen-29429625/)"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "e92eee15-18b1-4851-92ae-985d666b1857": {
      "main": [
        [
          {
            "node": "86fb16bb-484b-44df-b4f5-25fde65a6c7f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "85ff7b59-2c72-4846-953a-46ab1f50fee8": {
      "main": [
        [
          {
            "node": "97b2ea4d-4904-49f5-bb1e-ae7e71156640",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "97b2ea4d-4904-49f5-bb1e-ae7e71156640": {
      "main": [
        [
          {
            "node": "e92eee15-18b1-4851-92ae-985d666b1857",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "736b3314-daf7-4bd2-82e0-9e23018091b5": {
      "main": [
        [
          {
            "node": "e92eee15-18b1-4851-92ae-985d666b1857",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "86fb16bb-484b-44df-b4f5-25fde65a6c7f": {
      "main": [
        [
          {
            "node": "89810e9d-685e-4007-be83-0686ea779163",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ede2cb2e-bb56-4870-94a4-c27c78509124": {
      "main": [
        [
          {
            "node": "736b3314-daf7-4bd2-82e0-9e23018091b5",
            "type": "main",
            "index": 0
          },
          {
            "node": "85ff7b59-2c72-4846-953a-46ab1f50fee8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

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

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

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

중급 - 문서 추출

유료인가요?

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

관련 워크플로우 추천

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

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

저자
Robert Breen

Robert Breen

@rbreen

Professional services consultant with over 10 years of experience solving complex business problems across industries. I specialize in n8n and process automation—designing custom workflows that integrate tools like Google Calendar, Airtable, GPT, and internal systems. Whether you need to automate scheduling, sync data, or streamline operations, I build solutions that save time and drive results.

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34