WordPress投稿データをWP Rest APIに基づいてGoogle スプレッドシートにエクスポート
中級
これはMarket Research分野の自動化ワークフローで、15個のノードを含みます。主にSet, Code, Form, Merge, FormTriggerなどのノードを使用。 カテゴリとタグを含む WordPress 投稿を SEO 監査のために Google スプレッドシートにエクスポートする
前提条件
- •ターゲットAPIの認証情報が必要な場合あり
- •Google Sheets API認証情報
カテゴリー
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"id": "XnO085uXrhMERPvb",
"meta": {
"instanceId": "2295c029f4cb86c8f849f9c87dade323734dc279619eb9e2704f8473c381e4d1",
"templateCredsSetupCompleted": true
},
"name": "WordPress post data export to Google Sheets (based on WP Rest API)",
"tags": [],
"nodes": [
{
"id": "bfc25242-766f-4b7d-ab23-a0829de1fe83",
"name": "フォーム送信時",
"type": "n8n-nodes-base.formTrigger",
"position": [
-1120,
-320
],
"webhookId": "57b1b81e-feae-464e-9459-04b0e3efcaa1",
"parameters": {
"options": {},
"formTitle": "WP SEO Audit",
"formFields": {
"values": [
{
"fieldLabel": "URL",
"placeholder": "http://yourdomain.com",
"requiredField": true
},
{
"fieldType": "number",
"fieldLabel": "Post limit",
"placeholder": "Default =10"
}
]
}
},
"typeVersion": 2.3
},
{
"id": "3a5f6f97-c79a-4fed-b32a-fe7695e569f1",
"name": "投稿を取得",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueErrorOutput",
"position": [
-400,
-128
],
"parameters": {
"url": "={{ $json.URL }}/wp-json/wp/v2/posts?per_page={{ $json['Post limit'] }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "2201ba9e-40b8-4bcc-988c-e8dce2578dda",
"name": "カテゴリーを取得",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueErrorOutput",
"position": [
-400,
-320
],
"parameters": {
"url": "={{ $('On form submission').item.json.URL }}/wp-json/wp/v2/categories?per_page={{ $json.per_page }}",
"options": {},
"sendBody": true,
"bodyParameters": {
"parameters": [
{}
]
}
},
"typeVersion": 4.2
},
{
"id": "f6c0f099-2c27-45df-91b3-0fd1ea15d165",
"name": "タグを取得",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueErrorOutput",
"position": [
-400,
-512
],
"parameters": {
"url": "={{ $('On form submission').item.json.URL }}/wp-json/wp/v2/tags?per_page={{ $json.per_page }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "6a924b56-3613-4b7f-a7c8-819bbe38387b",
"name": "マージ",
"type": "n8n-nodes-base.merge",
"position": [
16,
-352
],
"parameters": {
"numberInputs": 3
},
"notesInFlow": false,
"typeVersion": 3.2
},
{
"id": "bc6731ac-f1aa-4594-a1a6-98275d976ea3",
"name": "WP API エラー",
"type": "n8n-nodes-base.form",
"position": [
-48,
-928
],
"webhookId": "ee9fe2bd-db09-469a-b3b1-cd335e4e6daf",
"parameters": {
"options": {},
"operation": "completion",
"completionTitle": "WordPress API Error",
"completionMessage": "Please check if your WP-Api is enabled"
},
"typeVersion": 2.3
},
{
"id": "46d785e4-fc5f-49ba-8aa6-ee6436621131",
"name": "投稿にタグとカテゴリー名を割り当て",
"type": "n8n-nodes-base.code",
"position": [
224,
-336
],
"parameters": {
"jsCode": "const tagItems = $items('Get Tags'); // [{ json: { id, name, ... }}, ...]\nconst categoryItems = $items('Get Categories'); // [{ json: { id, name, ... }}, ...]\nconst postItems = $items('Get Posts'); // [{ json: { categories: [ids], tags: [ids], ... }}, ...]\n\n// Build lookup maps\nconst tagsById = Object.fromEntries(\n tagItems\n .filter(i => i?.json?.id != null && i?.json?.name != null)\n .map(i => [String(i.json.id), i.json.name])\n);\n\nconst categoriesById = Object.fromEntries(\n categoryItems\n .filter(i => i?.json?.id != null && i?.json?.name != null)\n .map(i => [String(i.json.id), i.json.name])\n);\n\n// Helper: normalize a field that might be number | string | array into an array of strings\nconst toIdArray = (val) => {\n if (val == null) return [];\n if (Array.isArray(val)) return val.map(v => String(v));\n return [String(val)];\n};\n\n// Enrich posts with names instead of IDs\nconst out = postItems.map(item => {\n const post = item.json;\n\n const categoryIds = toIdArray(post.categories);\n const tagIds = toIdArray(post.tags);\n\n const categoryNames = categoryIds\n .map(id => categoriesById[id])\n .filter(Boolean);\n\n const tagNames = tagIds\n .map(id => tagsById[id])\n .filter(Boolean);\n\n return {\n json: {\n ...post,\n categoryNames,\n tagNames,\n },\n // keep binary if present\n binary: item.binary,\n };\n});\n\nreturn out;"
},
"typeVersion": 2
},
{
"id": "989f3e60-1a1b-454c-b5f8-cdd27bf5c379",
"name": "投稿(タグ・カテゴリー付き)をGoogleシートに追加",
"type": "n8n-nodes-base.googleSheets",
"position": [
480,
-336
],
"parameters": {
"columns": {
"value": {
"URL": "={{ $json.link }}",
"Tags": "={{ $json.tagNames }}",
"Title": "={{ $json.title.rendered }}",
"Categories": "={{ $json.categoryNames }}"
},
"schema": [
{
"id": "URL",
"type": "string",
"display": true,
"required": false,
"displayName": "URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Title",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Categories",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Categories",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Tags",
"type": "string",
"display": true,
"required": false,
"displayName": "Tags",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1nZ3WHn_QedbuNYlFVfPildBZETNYYJFT0yYFIgJy2Mg/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1nZ3WHn_QedbuNYlFVfPildBZETNYYJFT0yYFIgJy2Mg",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1nZ3WHn_QedbuNYlFVfPildBZETNYYJFT0yYFIgJy2Mg/edit?usp=drivesdk",
"cachedResultName": "[WP]"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "sgj6aGeryqEVmS3h",
"name": "GSheets - Piotr.Sikora.Ck@gmail.com"
}
},
"typeVersion": 4.7
},
{
"id": "88750e8c-ad3c-4f40-b3f5-83618faa5de4",
"name": "付箋",
"type": "n8n-nodes-base.stickyNote",
"position": [
400,
-640
],
"parameters": {
"color": 4,
"height": 496,
"content": "## Add posts, with tags, categories to Google Sheet\n\nRemember o create **Googe Sheet** with filds:\n- **URL**\n- **Title**\n- **Categories**\n- **Tags**"
},
"typeVersion": 1
},
{
"id": "ed1593aa-3c25-42d4-a8cc-020843039197",
"name": "付箋1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-112,
-1072
],
"parameters": {
"color": 3,
"height": 304,
"content": "## WP API Errror\n\nAPI is not avalable"
},
"typeVersion": 1
},
{
"id": "f23af13c-7b4d-46b4-af31-f33726fd8356",
"name": "付箋2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-480,
-928
],
"parameters": {
"color": 5,
"width": 256,
"height": 960,
"content": "## Fetch API data\n\nFetch the following resources:\n- **Posts**\n- **Categories**\n- **Tags**\n\n\nPlease note that the `per_page` parameter is statically assigned for the posts and categories endpoints, with its value set to 100.\n\nIf you require a different number of results, adjust the parameter in the appropriate nodes accordingly."
},
"typeVersion": 1
},
{
"id": "06d3d9a1-40bc-43e3-82a4-8bf08e640a9a",
"name": "付箋3",
"type": "n8n-nodes-base.stickyNote",
"position": [
144,
-640
],
"parameters": {
"color": 6,
"height": 496,
"content": "## Append categories and tags names\n\nWhat this does:\n- Reads Get Tags, Get Categories, and Get Posts.\n- Builds fast lookup maps.\n- Appends `categoryNames` and `tagNames` directly into each post.\n- Returns the modified posts ready for next steps."
},
"typeVersion": 1
},
{
"id": "c51ef4bd-2234-486b-b0f1-2d40f0d00e00",
"name": "フォーム",
"type": "n8n-nodes-base.form",
"position": [
688,
-336
],
"webhookId": "32930177-d74b-4ab5-98b6-7726b70811f5",
"parameters": {
"options": {},
"operation": "completion",
"completionTitle": "List created",
"completionMessage": "Please check linked document to see details"
},
"typeVersion": 2.3
},
{
"id": "b5e7141e-b922-496f-afd7-1c75a29dc408",
"name": "付箋4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-848,
-656
],
"parameters": {
"color": 7,
"height": 368,
"content": "## Config per_page\n\nConfigure `per_page` parametter."
},
"typeVersion": 1
},
{
"id": "7a062203-6a2e-4521-a98d-f1435f52ad17",
"name": "設定",
"type": "n8n-nodes-base.set",
"position": [
-784,
-448
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "39de8718-83b1-4060-9dc9-23b1a0a20857",
"name": "per_page",
"type": "number",
"value": 100
}
]
}
},
"typeVersion": 3.4
}
],
"active": false,
"pinData": {
"On form submission": [
{
"json": {
"URL": "http://juttle.app",
"formMode": "test",
"Post limit": 1,
"submittedAt": "2025-10-22T10:15:02.313+02:00"
}
}
]
},
"settings": {
"executionOrder": "v1"
},
"versionId": "91e580eb-4b6f-45ea-a1fc-68998aa694db",
"connections": {
"6a924b56-3613-4b7f-a7c8-819bbe38387b": {
"main": [
[
{
"node": "46d785e4-fc5f-49ba-8aa6-ee6436621131",
"type": "main",
"index": 0
}
]
]
},
"7a062203-6a2e-4521-a98d-f1435f52ad17": {
"main": [
[
{
"node": "f6c0f099-2c27-45df-91b3-0fd1ea15d165",
"type": "main",
"index": 0
},
{
"node": "2201ba9e-40b8-4bcc-988c-e8dce2578dda",
"type": "main",
"index": 0
}
]
]
},
"f6c0f099-2c27-45df-91b3-0fd1ea15d165": {
"main": [
[
{
"node": "6a924b56-3613-4b7f-a7c8-819bbe38387b",
"type": "main",
"index": 0
}
],
[
{
"node": "bc6731ac-f1aa-4594-a1a6-98275d976ea3",
"type": "main",
"index": 0
}
]
]
},
"3a5f6f97-c79a-4fed-b32a-fe7695e569f1": {
"main": [
[
{
"node": "6a924b56-3613-4b7f-a7c8-819bbe38387b",
"type": "main",
"index": 2
}
],
[
{
"node": "bc6731ac-f1aa-4594-a1a6-98275d976ea3",
"type": "main",
"index": 0
}
]
]
},
"2201ba9e-40b8-4bcc-988c-e8dce2578dda": {
"main": [
[
{
"node": "6a924b56-3613-4b7f-a7c8-819bbe38387b",
"type": "main",
"index": 1
}
],
[
{
"node": "bc6731ac-f1aa-4594-a1a6-98275d976ea3",
"type": "main",
"index": 0
}
]
]
},
"bfc25242-766f-4b7d-ab23-a0829de1fe83": {
"main": [
[
{
"node": "3a5f6f97-c79a-4fed-b32a-fe7695e569f1",
"type": "main",
"index": 0
},
{
"node": "7a062203-6a2e-4521-a98d-f1435f52ad17",
"type": "main",
"index": 0
}
]
]
},
"46d785e4-fc5f-49ba-8aa6-ee6436621131": {
"main": [
[
{
"node": "989f3e60-1a1b-454c-b5f8-cdd27bf5c379",
"type": "main",
"index": 0
}
]
]
},
"989f3e60-1a1b-454c-b5f8-cdd27bf5c379": {
"main": [
[
{
"node": "c51ef4bd-2234-486b-b0f1-2d40f0d00e00",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
中級 - 市場調査
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
engagementsスコアとGoogle Sheetsを使用したYouTube動画のウイルスのコンテンツ分析
YouTube動画のウイルスのコンテンツを分析するためのエンゲージメントスコアとGoogle Sheetsの使用
Set
Code
Wait
+
Set
Code
Wait
22 ノードAkash Kankariya
市場調査
[astro/nextjs] 記事/投稿へのカテゴリ/タグ割り当て
OpenAI GPT-4、GitHub、Google Sheetsを使ってAstro/Next.jsブログ記事を自動分類
Code
Form
Merge
+
Code
Form
Merge
29 ノードPiotr Sikora
コンテンツ作成
[LI] - プロフィールを検索
SerpAPI と Google テーブルを使用して LinkedIn プロフィールを検索し、収集する
Set
Code
Form
+
Set
Code
Form
14 ノードPiotr Sikora
リード獲得
アイデア捕集テンプレート
Reddit、YouTube、Xを分析してコンテンツ戦略レポートを生成するGeminiの使用
If
Set
Code
+
If
Set
Code
34 ノードSheryl
市場調査
CSVからHubSpotアップローダー(動のフィールドマッピングとGoogle Sheets連携)
CSVをHubSpotにアップロードするツール(動のフィールドマッピングとGoogle Sheets連携)
If
Set
Code
+
If
Set
Code
36 ノードPollupAI
人工知能
01 AIメディアバイヤーでFacebook広告のパフォーマンスを分析し、インサイトをGoogle Sheetsへ送信
Gemini AIを使用してFacebook広告を分析し、インサイトをGoogle Sheetsに送信
If
Set
Code
+
If
Set
Code
34 ノードJJ Tham
市場調査