Google 스프레드시트에서 Shopify 제품 생성
중급
이것은CRM분야의자동화 워크플로우로, 13개의 노드를 포함합니다.주로 If, Graphql, GoogleSheets, ManualTrigger, SplitInBatches 등의 노드를 사용하며. Google 스프레드시트에서 대량으로 Shopify 제품을 생성하고 재고 관리
사전 요구사항
- •Google Sheets API 인증 정보
카테고리
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "NO1Jrg2IkMTiquxb",
"meta": {
"instanceId": "eeebdb47cbe0bf5bc137514a863458fd2f9ab992b2ebeb2c6062100cdade81e7",
"templateCredsSetupCompleted": true
},
"name": "Create Shopify Products from Google Sheet",
"tags": [
{
"id": "cWC39BXOsHlOhwEC",
"name": "google-sheet",
"createdAt": "2025-06-11T02:39:38.743Z",
"updatedAt": "2025-06-11T02:39:38.743Z"
},
{
"id": "vMF1giVsFs9aUam0",
"name": "shopify",
"createdAt": "2025-06-11T02:39:27.034Z",
"updatedAt": "2025-06-11T02:39:27.034Z"
}
],
"nodes": [
{
"id": "0d76a8c0-fd78-47d8-899d-6a084317ab28",
"name": "워크플로 시작",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-540,
20
],
"parameters": {},
"typeVersion": 1
},
{
"id": "54ce8605-f90e-4666-85e5-cdbc0dba8077",
"name": "Google 시트, 제품 가져오기",
"type": "n8n-nodes-base.googleSheets",
"position": [
-40,
20
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1164444657,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1IxiuRiu6XKBkEa1NIUebBWn73jIKUrgE9Sqj4XtQgBk/edit#gid=1164444657",
"cachedResultName": "Products"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1IxiuRiu6XKBkEa1NIUebBWn73jIKUrgE9Sqj4XtQgBk",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1IxiuRiu6XKBkEa1NIUebBWn73jIKUrgE9Sqj4XtQgBk/edit?usp=drivesdk",
"cachedResultName": "Shopify Test Store Data"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "GQE41DhnGDDJ8Hfq",
"name": "Google Sheets account"
}
},
"executeOnce": true,
"typeVersion": 4.6
},
{
"id": "c750de2c-71c4-4eed-a6d2-6f0fa8cfe114",
"name": "Shopify, ProductQuery",
"type": "n8n-nodes-base.graphql",
"position": [
500,
40
],
"parameters": {
"query": "query Products ($handle: String! ) {\n productByHandle(handle: $handle) {\n id\n title\n variants(first:20) {\n edges {\n node {\n id\n title\n sku\n price \n inventoryItem {\n id\n }\n }\n }\n }\n updatedAt\n createdAt\n }\n}",
"endpoint": "https://store99563.myshopify.com/admin/api/2025-04/graphql.json",
"variables": "={\n \"handle\" : \"{{ $json.slug }}\"\n}",
"authentication": "headerAuth"
},
"credentials": {
"httpHeaderAuth": {
"id": "mHtpN3u5aCWsxWih",
"name": "Shopify GraphQL Header Auth account"
}
},
"typeVersion": 1.1
},
{
"id": "2f350bac-d1d5-4d69-b18b-a2f802594599",
"name": "상품 존재 여부 확인",
"type": "n8n-nodes-base.if",
"position": [
740,
40
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "81228bbc-7111-40ec-8b37-3c9878945c4d",
"operator": {
"type": "object",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.data.productByHandle }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "fe218fdb-6c58-49d5-b3c2-b34bbf14b54c",
"name": "Shopify, CreateProduct",
"type": "n8n-nodes-base.graphql",
"position": [
960,
200
],
"parameters": {
"query": "mutation productCreate($product: ProductCreateInput!, $media: [CreateMediaInput!]) {\n productCreate(product: $product, media: $media) {\n product {\n id\n title\n descriptionHtml\n vendor\n productType\n status\n handle\n variants(first:10) {\n edges {\n node {\n id\n sku\n displayName\n inventoryItem {\n id\n sku\n tracked\n requiresShipping\n }\n }\n }\n }\n media(first: 10) {\n edges {\n node {\n alt\n mediaContentType\n status\n id\n preview {\n image {\n url\n }\n status\n }\n }\n }\n }\n options {\n id\n name\n position\n optionValues {\n id\n name\n hasVariants\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n}",
"endpoint": "https://store99563.myshopify.com/admin/api/2025-04/graphql.json",
"variables": "={\n \"product\": {\n \"title\": \" {{ $('Loop Over Items').item.json.title }} \",\n \"descriptionHtml\": \"{{ $('Loop Over Items').item.json.description }}\",\n \"vendor\" : \"{{ $('Loop Over Items').item.json.company }}\",\n \"productType\": \"{{ $('Loop Over Items').item.json.category }}\",\n \"status\": \"{{ $('Loop Over Items').item.json.status }}\",\n \"handle\": \"{{ $('Loop Over Items').item.json.slug }}\"\n },\n \"media\" : [{\n \"alt\" : \"alt tag\",\n \"mediaContentType\" : \"IMAGE\",\n \"originalSource\" : \"https://placehold.co/800x600.png\"\n }]\n}",
"authentication": "headerAuth"
},
"credentials": {
"httpHeaderAuth": {
"id": "mHtpN3u5aCWsxWih",
"name": "Shopify GraphQL Header Auth account"
}
},
"typeVersion": 1.1
},
{
"id": "65032b74-36a8-46ee-b1a1-eaddcec9be1b",
"name": "항목 반복 처리",
"type": "n8n-nodes-base.splitInBatches",
"position": [
240,
20
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "099ed035-6a41-4abb-8bed-011d8a6e4cc5",
"name": "Shopify, GetLocations",
"type": "n8n-nodes-base.graphql",
"position": [
-280,
20
],
"parameters": {
"query": "query {\n locations(first:1, reverse:true) {\n edges {\n node {\n id\n name\n address {\n address1\n address2\n city\n country\n zip\n province\n }\n }\n }\n }\n}",
"endpoint": "https://store99563.myshopify.com/admin/api/2025-04/graphql.json",
"authentication": "headerAuth"
},
"credentials": {
"httpHeaderAuth": {
"id": "mHtpN3u5aCWsxWih",
"name": "Shopify GraphQL Header Auth account"
}
},
"executeOnce": true,
"typeVersion": 1.1
},
{
"id": "be29e4ea-51fb-4e8b-a2c2-b4b2e590fd2a",
"name": "Shopify, Enable InventoryTracking",
"type": "n8n-nodes-base.graphql",
"position": [
1160,
200
],
"parameters": {
"query": "mutation inventoryItemUpdate($id: ID!, $input: InventoryItemInput!) {\n inventoryItemUpdate(id: $id, input: $input) {\n inventoryItem {\n id\n unitCost {\n amount\n }\n tracked\n }\n userErrors {\n message\n }\n }\n}",
"endpoint": "https://store99563.myshopify.com/admin/api/2025-04/graphql.json",
"variables": "={\n \"id\": \"{{ $json.data.productCreate.product.variants.edges[0].node.inventoryItem.id }}\",\n \"input\": {\n \"tracked\": true,\n \"requiresShipping\": true\n }\n}",
"authentication": "headerAuth"
},
"credentials": {
"httpHeaderAuth": {
"id": "mHtpN3u5aCWsxWih",
"name": "Shopify GraphQL Header Auth account"
}
},
"typeVersion": 1.1
},
{
"id": "a22761aa-b55d-41a6-b853-d165ae9aa89c",
"name": "Shopify, Set InventoryLevel",
"type": "n8n-nodes-base.graphql",
"position": [
1360,
200
],
"parameters": {
"query": "mutation inventorySetOnHandQuantities($input: InventorySetOnHandQuantitiesInput!) {\n inventorySetOnHandQuantities(input: $input) {\n userErrors {\n field\n message\n }\n }\n}",
"endpoint": "=https://store99563.myshopify.com/admin/api/2025-04/graphql.json",
"variables": "={\n \"input\" : {\n \"reason\": \"correction\",\n \"setQuantities\" :[{\n \"inventoryItemId\":\"{{ $json.data.inventoryItemUpdate.inventoryItem.id }}\",\n \"locationId\": \"{{ $('Shopify, GetLocations').item.json.data.locations.edges[0].node.id }}\",\n \"quantity\" : {{ $('Loop Over Items').item.json.stock_on_hand }}\n }]\n }\n}",
"authentication": "headerAuth"
},
"credentials": {
"httpHeaderAuth": {
"id": "mHtpN3u5aCWsxWih",
"name": "Shopify GraphQL Header Auth account"
}
},
"typeVersion": 1.1
},
{
"id": "2b69fe40-d04e-4e60-b1e4-f19290b97edc",
"name": "완료",
"type": "n8n-nodes-base.noOp",
"position": [
460,
-220
],
"parameters": {},
"typeVersion": 1
},
{
"id": "44572b5d-e19b-48e3-b80d-6d6ec7ae0273",
"name": "메모지",
"type": "n8n-nodes-base.stickyNote",
"position": [
-540,
-680
],
"parameters": {
"width": 800,
"height": 660,
"content": "## Create Products in Shopify from a Google Sheet\n\nThis workflow creates products in your Shopify store from a google sheet. It also enables inventory tracking and sets the quantity of an inventory item at your store's default location. \n\nThis is a great way to get test data into test or staging stores to try out apps, update template or try out new designs. \n\nThis Automation will only import new products. It will skip existing products if the slug matches an existing product's handle (Shopify's term for a slug).\n \n### Setup Notes\n\nThe Google Sheet has the following columns\ntitle - free text\ndescription - free text\ncompany - free text\ncategory - free text\nstatus - ACTIVE, DRAFT or ARCHIVE\nslug - used in the product url, text with no spaces, can also use hyphen.\nprice - sale price of the products\ncompare_at_price - compare at price for products\nsku - unique code for each product\nstock_on_hand - quantity of this item available for purchase.\n\nUse those labels in the first row of your sheet and N8N will create one object per row with the column names as object fields. \n\n### Update GraphQL nodes with your Shopify store URL\n\n1) Replace the URL in all GraphQL nodes with the URL for your Shopify store. \n2) These GraphQL requests all use the Shopify 2025-04 GraphQL Admin API. \n"
},
"typeVersion": 1
},
{
"id": "56b55c86-ec42-4154-a44f-c8cf50cbcc0f",
"name": "메모지1",
"type": "n8n-nodes-base.stickyNote",
"position": [
420,
-40
],
"parameters": {
"width": 480,
"height": 340,
"content": "## Check to see if product exists\n"
},
"typeVersion": 1
},
{
"id": "1c3e5c1d-fad0-4059-9fe2-cc1ea3b9ca52",
"name": "메모지2",
"type": "n8n-nodes-base.stickyNote",
"position": [
920,
60
],
"parameters": {
"width": 600,
"height": 400,
"content": "## Create the Product\n- Create product.\n- Enable inventory tracking \n- Set inventory quantity"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "292ad12e-25e6-495f-9361-f63996ac146a",
"connections": {
"0d76a8c0-fd78-47d8-899d-6a084317ab28": {
"main": [
[
{
"node": "099ed035-6a41-4abb-8bed-011d8a6e4cc5",
"type": "main",
"index": 0
}
]
]
},
"65032b74-36a8-46ee-b1a1-eaddcec9be1b": {
"main": [
[
{
"node": "2b69fe40-d04e-4e60-b1e4-f19290b97edc",
"type": "main",
"index": 0
}
],
[
{
"node": "c750de2c-71c4-4eed-a6d2-6f0fa8cfe114",
"type": "main",
"index": 0
}
]
]
},
"2f350bac-d1d5-4d69-b18b-a2f802594599": {
"main": [
[
{
"node": "65032b74-36a8-46ee-b1a1-eaddcec9be1b",
"type": "main",
"index": 0
}
],
[
{
"node": "fe218fdb-6c58-49d5-b3c2-b34bbf14b54c",
"type": "main",
"index": 0
}
]
]
},
"099ed035-6a41-4abb-8bed-011d8a6e4cc5": {
"main": [
[
{
"node": "54ce8605-f90e-4666-85e5-cdbc0dba8077",
"type": "main",
"index": 0
}
]
]
},
"c750de2c-71c4-4eed-a6d2-6f0fa8cfe114": {
"main": [
[
{
"node": "2f350bac-d1d5-4d69-b18b-a2f802594599",
"type": "main",
"index": 0
}
]
]
},
"fe218fdb-6c58-49d5-b3c2-b34bbf14b54c": {
"main": [
[
{
"node": "be29e4ea-51fb-4e8b-a2c2-b4b2e590fd2a",
"type": "main",
"index": 0
}
]
]
},
"a22761aa-b55d-41a6-b853-d165ae9aa89c": {
"main": [
[
{
"node": "65032b74-36a8-46ee-b1a1-eaddcec9be1b",
"type": "main",
"index": 0
}
]
]
},
"54ce8605-f90e-4666-85e5-cdbc0dba8077": {
"main": [
[
{
"node": "65032b74-36a8-46ee-b1a1-eaddcec9be1b",
"type": "main",
"index": 0
}
]
]
},
"be29e4ea-51fb-4e8b-a2c2-b4b2e590fd2a": {
"main": [
[
{
"node": "a22761aa-b55d-41a6-b853-d165ae9aa89c",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급 - 고객관계관리
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
Chorus -> HubSpot - 통화 요약 전송
Chorus AI에서 HubSpot CRM으로의 자동 통화 요약 전송
If
Code
Filter
+
If
Code
Filter
18 노드Rivers Colyer
고객관계관리
제안 생성_드래프트 저장 자동화
Azure GPT-4o를 사용하여 비즈니스 제안 생성하고 Sheets에서 Gmail 초안으로 저장
If
Code
Gmail
+
If
Code
Gmail
16 노드Rahul Joshi
고객관계관리
AI 생성 WordPress 글 요약 블록
WordPress 글의 AI 생성 요약 블록
If
Set
Slack
+
If
Set
Slack
32 노드Dataki
인공지능
Facebook 페이지 댓글 관리 봇: 답글, 삭제, 차단 및 알림
AI 기반 Facebook 댓글 관리: 자동 답글, 삭제, 차단 및 알림
If
Set
Code
+
If
Set
Code
59 노드SpaGreen Creative
소셜 미디어
基于AI의潜在고객信息增强(Bright Data MCP및Google Sheets)
基于AI의潜在고객信息增强:사용Bright Data MCP및Google Sheets
If
Set
Wait
+
If
Set
Wait
51 노드Cyril Nicko Gaspar
영업
Gmail, OpenAI 및 Google 스프레드시트를 사용한 애자일 정제 준비 자동화
Gmail, OpenAI 및 Google 시트를 사용한 애자일 스토리 정제 준비 자동화
If
Set
Gmail
+
If
Set
Gmail
51 노드Willemijn
제품