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 Sheet, 商品データ取得",
      "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など)は別途料金が発生する場合があります。

ワークフロー情報
難易度
中級
ノード数13
カテゴリー1
ノードタイプ7
難易度説明

経験者向け、6-15ノードの中程度の複雑さのワークフロー

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34