n8nでGoogleスプレッドシートから複数の記事をまとめて取得できるようになると、
- 「3記事を1件ずつ順番にWordPressへ投稿したい」
- 「一気に処理して失敗するのが怖い」
- 「投稿が終わった記事だけ完了にしたい」
という場面が出てきます。
そんなときに使えるのが、
Google Sheets
+
Loop Over Items
+
WordPress
の組み合わせです。
この記事では、Googleスプレッドシートに並んだ複数の記事を、n8nで1件ずつ順番にWordPressへ投稿する方法を、初心者向けにやさしく解説します。
実例として、
- 記事A
- 記事B
- 記事C
の3記事を順番に下書き投稿する流れを使います。
今回作る自動化
完成イメージは次の通りです。
- Google Sheets
- 入稿待ちの記事を複数取得
- Loop Over Items
- 1件ずつ取り出す
- WordPressへ下書き投稿
- Google Sheetsを完了へ更新
- Loop Over Itemsへ戻る
- 次の記事を処理
全部終わったら、
done
↓
処理終了
Googleスプレッドシートの例
たとえば次のような記事管理表を作ります。
- A列
タイトル - B列
本文 - C列
カテゴリ - D列
入稿ステータス - E列
WP投稿済み - F列
Post ID
実例は、
- 記事A
入稿ステータス:入稿待ち - 記事B
入稿ステータス:入稿待ち - 記事C
入稿ステータス:入稿待ち
です。
n8nでこの3件を取得して、1件ずつWordPressへ送ります。
まず「入稿待ち」だけ取得する
最初のGoogle Sheetsノードでは、
入稿ステータス
=入稿待ち
の記事だけ取得します。
つまり、
- 記事A
入稿待ち
→取得 - 記事B
入稿待ち
→取得 - 記事C
入稿待ち
→取得 - 記事D
完了
→取得しない
という形です。
最初から必要な記事だけに絞っておくと、完了済みの記事を再投稿しにくくなります。
複数件取得するとどうなる?
Google Sheetsノードを実行すると、OUTPUTに複数のアイテムが出ます。
たとえば、
- Item 1
記事A - Item 2
記事B - Item 3
記事C
です。
ここでいうItemは、
「1件のデータ」
くらいに考えれば大丈夫です。
Loop Over Itemsとは?
Loop Over Itemsは、複数のデータを決めた件数ずつ処理するためのノードです。
今回は、
3記事を1件ずつ
処理したいので、
Batch Size=1
にします。
これで、
- 記事A
↓
処理 - 記事B
↓
処理 - 記事C
↓
処理
という順番にできます。
Batch Sizeを1にする意味
Batch Sizeとは、
「1回に何件処理するか」
という設定です。
Batch Sizeが1なら、
1件ずつ
です。
Batch Sizeが3なら、
3件まとめて
処理します。
初心者がWordPress投稿を試すなら、まず1がおすすめです。
1件ずつなら、途中で失敗したときにどの記事で止まったのかわかりやすいからです。
Loop Over Itemsのloopとdone
Loop Over Itemsには、
loop
done
という2つの出口があります。
loop
=まだ処理する記事がある
done
=全部終わった
です。
たとえば3記事なら、
- 記事A
↓
loop - 記事B
↓
loop - 記事C
↓
loop - 全部終了
↓
done
というイメージです。
WordPressノードはloop側につなぐ
1件ずつ投稿したい場合、WordPressノードはloop側につなぎます。
流れは、
Loop Over Items
↓
loop
↓
WordPress
です。
done側へWordPressをつなぐと、
全部のループが終わったあと
に実行されるので、目的が変わってしまいます。
WordPressへ何を送る?
WordPressへは、
タイトル
本文
カテゴリ
投稿ステータス
などを送ります。
たとえば、
Title
=記事タイトル
Content
=記事本文
Status
=Draft
です。
初心者なら、最初は下書き保存がおすすめです。
なぜDraftにするの?
自動化では、
本文が空だった
カテゴリが違った
HTMLが崩れた
ということもあります。
最初から公開すると、そのままサイトに出てしまいます。
そのため、
下書き
↓
人間が確認
↓
公開
という流れが安全です。
実例:記事Aを投稿する
最初のループで、
記事A
が出てきます。
たとえば、
タイトル
n8nとは?
本文
n8nは自動化ツールです。
カテゴリ
n8n
だったとします。
このデータをWordPressへ送ります。
成功すると、
Post ID
=845
のような投稿IDが返ってきます。
投稿後にGoogle Sheetsを更新する
WordPress投稿が成功したら、同じ記事の行を更新します。
たとえば、
入稿ステータス
=完了
WP投稿済み
=済
Post ID
=845
に変更します。
これで、
「記事Aは投稿済み」
と管理できます。
row_numberを使う
ここで重要なのが、
どの行を更新するか
です。
Google Sheetsから記事を取得するときに、
row_number
も使えるようにしておくと便利です。
たとえば記事Aが5行目なら、
row_number
=5
です。
最後のGoogle Sheets更新で、
5行目
を指定すれば、記事Aの行だけ更新できます。
実例:3記事を順番に処理する
実際の流れを見てみましょう。
1件目
記事A
row_number:5
↓
WordPress投稿
↓
Post ID:845
↓
5行目を更新
入稿ステータス:完了
WP投稿済み:済
Post ID:845
2件目
Loop Over Itemsへ戻ります。
次に、
記事B
row_number:6
が出てきます。
↓
WordPress投稿
↓
Post ID:846
↓
6行目を更新
3件目
次に、
記事C
row_number:7
を処理します。
↓
WordPress投稿
↓
Post ID:847
↓
7行目を更新
これで3記事すべて完了です。
Loop Over Itemsへ戻す
Google Sheetsの更新まで終わったら、
最後のノードからLoop Over Itemsへ戻します。
流れは、
Loop Over Items
↓
WordPress
↓
Google Sheets更新
↓
Loop Over Itemsへ戻る
です。
これによって、
次の記事をください
という動きになります。
全部終わったらdoneへ進む
すべての記事が終わると、
done
側へ進みます。
ここには、
完了通知
などをつなげられます。
たとえば、
Gmail
Slack
Discord
などへ、
3件の記事投稿が完了しました
と送ることもできます。
実例:done側で完了通知する
流れは、
- Google Sheets
- ↓
- Loop Over Items
- ↓
- WordPress
- ↓
- Google Sheets更新
- ↓
- Loop Over Items
全部終了
↓
done
↓
Gmail
「記事投稿が完了しました」
ただし、最初は通知まで作らなくても大丈夫です。
OpenAIを間に入れる場合
Google Sheetsに完成本文ではなく、
テーマだけ
入れている場合もあります。
その場合は、
- Google Sheets
- ↓
- Loop Over Items
- ↓
- OpenAI
- ↓
- WordPress
- ↓
- Google Sheets更新
- ↓
- Loop Over Items
という構成にできます。
記事AをAIで作る
↓
投稿
↓
完了
記事BをAIで作る
↓
投稿
↓
完了
という流れです。
HTML整形も1件ずつできる
さらに、
OpenAIで記事生成
↓
OpenAIでHTML整形
↓
WordPress
という流れにもできます。
たとえば、
- Google Sheets
- ↓
- Loop Over Items
- ↓
- OpenAI 本文生成
- ↓
- OpenAI HTML整形
- ↓
- WordPress
- ↓
- Google Sheets更新
- ↓
- Loop Over Items
です。
1記事ずつ処理するので、どこで失敗したか確認しやすくなります。
実はLoop Over Itemsがいらない場合もある
ここは大事です。
n8nでは、多くのノードが複数アイテムをそのまま処理できます。
つまり、
複数記事
=必ずLoop Over Items
ではありません。
Google Sheetsから3件取得して、そのままWordPressノードへつないでも処理できる場合があります。
では、なぜLoop Over Itemsを使うのでしょうか?
Loop Over Itemsを使う理由
Loop Over Itemsが向いているのは、
- 1件ずつ順番に処理したい
- 途中で結果を保存したい
- APIへ一気に送信したくない
- 処理間隔を調整したい
- エラー箇所をわかりやすくしたい
場合です。
初心者が仕組みを理解する目的でも、1件ずつ処理すると流れを追いやすいです。
途中でエラーが出たらどうなる?
たとえば3件処理中に、
記事A
成功
記事B
成功
記事C
失敗
となる場合があります。
このとき、
記事A
完了
記事B
完了
記事C
処理中
のように管理できていれば、
どこで止まったのか
わかります。
1件ごとにシート更新するメリット
もし3件すべて投稿したあとにまとめてGoogle Sheetsを更新する設計だと、
2件成功
↓
3件目で失敗
↓
どこまで成功したかわからない
という状態になりやすいです。
そのため、
1件投稿
↓
すぐシート更新
がおすすめです。
「処理中」ステータスを使う
さらに安全にするなら、
入稿待ち
↓
処理中
↓
完了
の3段階にします。
たとえば、
記事A
入稿待ち
↓
Loop Over Itemsで取得
↓
処理中へ変更
↓
WordPress投稿
↓
完了へ変更
です。
途中でエラーになったら、
処理中
のまま残るので見つけやすくなります。
Post IDも保存する
WordPress投稿後には、
Post ID
も保存しておきましょう。
たとえば、
- 記事A
Post ID:845 - 記事B
Post ID:846 - 記事C
Post ID:847
です。
これがあると、
- WordPressの記事をあとで更新する
- アイキャッチを設定する
- 重複投稿を防ぐ
といった処理に使えます。
重複投稿を防ぐ
複数記事を自動処理するときは、重複投稿対策も重要です。
たとえばWordPress投稿が成功したあと、
Google Sheets更新だけ失敗
した場合です。
シート上ではまだ「入稿待ち」なので、再実行すると同じ記事をもう一度投稿する可能性があります。
対策として、
入稿ステータス
WP投稿済み
Post ID
を確認します。
IFノードを追加する方法
WordPress投稿前にIFノードを入れて、
入稿ステータス
=入稿待ち
AND
WP投稿済み
≠済
AND
Post ID
=空欄
の場合だけ投稿するようにできます。
流れは、
Loop Over Items
↓
IF
↓
条件OK
↓
WordPress
です。
途中エラー時に最初から全部やり直さない
3記事のうち、
A
成功
B
成功
C
失敗
なら、
Cだけ再処理
できるようにしておくと便利です。
そのためにも、
A
完了
B
完了
C
処理中
とステータスを残します。
次回は、
完了記事を除外
して、必要な記事だけ処理します。
Waitノードを使う方法
外部APIへのアクセスを少しずつにしたい場合、
Waitノード
を入れる方法もあります。
たとえば、
記事A投稿
↓
2秒待つ
↓
記事B投稿
↓
2秒待つ
という流れです。
APIによっては短時間に大量アクセスすると制限されることがあります。
ただし、何秒待つべきかは利用するサービスごとに違います。
公式情報を確認してください。
OpenAI APIの料金にも注意する
たとえば10記事を処理すると、
OpenAI
10回以上
呼び出される可能性があります。
さらに、
本文生成
タイトル生成
HTML整形
を別々に行えば、
1記事で3回
APIを使うこともあります。
10記事なら、
最大30回
のように増えます。
大量処理する前に、API料金や利用量を確認しましょう。
最初は3件でテストする
初心者なら、
100記事
ではなく、
3記事
くらいから試すのがおすすめです。
たとえば、
- 記事A
- 記事B
- 記事C
だけ用意します。
確認するポイントは、
- Aが投稿されたか
- Aの行が完了になったか
- Bへ進んだか
- Bも完了したか
- Cまで進んだか
- doneまで到達したか
よくある失敗1:Batch Sizeが違う
1件ずつ処理したいのに、
Batch Size
=10
になっていると、10件単位で処理されます。
1件ずつなら、
Batch Size=1
にします。
よくある失敗2:WordPressをdone側につないでいる
WordPressは、
loop側
につなぎます。
done側は、
全部終わったあとの処理
です。
接続先を間違えないようにしましょう。
よくある失敗3:Loop Over Itemsへ戻していない
1件目だけ処理して止まる場合、
最後のノードからLoop Over Itemsへ戻る接続
を確認します。
繰り返し処理では、
処理
↓
Loop Over Itemsへ戻る
↓
次のデータ
という流れが必要です。
よくある失敗4:別の行を更新する
記事Aを投稿したのに、
記事Bの行を完了
にすると管理が崩れます。
row_numberなどを使って、
最初に取得した記事と同じ行
を更新しましょう。
よくある失敗5:Post IDを取り違える
WordPress記事作成のidと、
画像アップロードのid
は別です。
記事のPost IDを保存したいなら、
WordPress記事作成ノード
から返ってきたidを使います。
よくある失敗6:3件全部が同じ内容になる
Expressionの参照方法によっては、
毎回最初の1件だけ
を参照してしまうことがあります。
たとえば.first()を不用意に使うと、常に最初のデータを取得してしまうケースがあります。
複数アイテムを処理する場合は、
「今処理しているItem」
を使っているか確認しましょう。
これは重要な注意点です。
.first()を使うときは注意
.first()は、
「そのノードの最初のアイテム」
を取得します。
3件の記事を順番に処理しているのに、
毎回最初の記事を参照
すると、
記事A
記事A
記事A
のような処理になる可能性があります。
複数記事処理では、Expressionの参照先を必ずテストしてください。
今処理中のデータなら$jsonを使える場合がある
たとえばLoop Over Itemsから直接流れてきた、
現在の記事タイトル
を使うなら、
{{ $json["タイトル"] }}
のように現在のアイテムを参照できます。
これなら、
記事Aのときは記事A
記事Bのときは記事B
の記事データを使いやすくなります。
OUTPUTを毎回確認する
最初のテストでは、
Loop Over Items
WordPress
Google Sheets更新
それぞれのOUTPUTを確認します。
見るポイントは、
- 今どの記事を処理しているか
- row_numberは合っているか
- Post IDは正しいか
- ステータス更新先は正しいか
実際のおすすめ構成
初心者なら、
- Google Sheets
入稿待ち取得 - ↓
- Loop Over Items
Batch Size 1 - ↓
- Google Sheets
処理中へ変更 - ↓
- WordPress
下書き投稿 - ↓
- Google Sheets
完了・Post ID保存 - ↓
- Loop Over Itemsへ戻る
がおすすめです。
ChatGPTも使う場合
記事作成まで入れるなら、
- Google Sheets
- ↓
- Loop Over Items
- ↓
- 処理中へ変更
- ↓
- OpenAI
本文生成 - ↓
- OpenAI
HTML整形 - ↓
- WordPress
下書き投稿 - ↓
- Google Sheets
完了・Post ID保存 - ↓
- Loop Over Itemsへ戻る
ココナラのn8nテンプレートについて
私は、
「ChatGPTで作った記事をWordPressへ半自動入稿するn8nテンプレート Lite」
をココナラで公開しています。
Google Sheetsで記事を管理し、
n8n
↓
WordPress
へ下書き入稿する流れを作るためのテンプレートです。
複数記事を扱う場合も、
対象記事を取得
処理する
WordPressへ投稿
結果をGoogle Sheetsへ戻す
という基本は同じです。
テンプレートを使う場合もテストは必要
完成済みテンプレートでも、
自分のGoogle Sheets
列名
WordPress Credential
カテゴリ
OpenAI設定
などへ合わせる必要があります。
また、大量の記事をいきなり流さず、
1件
↓
3件
↓
必要なら件数を増やす
という順番がおすすめです。
初心者はこの順番で作ろう
- Google Sheetsにテスト記事を3件用意する
- 3件とも「入稿待ち」にする
- Google Sheetsから3件取得する
- OUTPUTで3Itemsあることを確認する
- Loop Over Itemsを追加する
- Batch Sizeを1にする
- loop側へWordPressをつなぐ
- WordPressをDraftにする
- 投稿後に同じ行を完了へ更新する
- 最後のノードをLoop Over Itemsへ戻す
- doneまで進むか確認する
- WordPressとGoogle Sheetsの結果を確認する
まずは3件だけで十分です。
まとめ
n8nを使えば、Googleスプレッドシートにある複数の記事を、1件ずつ順番にWordPressへ投稿できます。
基本の流れは、
Google Sheets
↓
入稿待ちの記事を取得
↓
Loop Over Items
↓
1件ずつ処理
↓
WordPress
↓
Google Sheets更新
↓
次の記事
です。
1件ずつ処理したいなら、
Batch Size
=1
にします。
さらに、
入稿待ち
↓
処理中
↓
完了
というステータス管理と、
Post ID保存
を組み合わせると管理しやすくなります。
初心者が特に注意したいのは、
- loopとdoneを間違えない
- row_numberを正しく使う
- Post IDを正しい行へ保存する
- 複数記事なのに最初のItemだけ参照しない
という点です。
まずは、
- 記事A
- 記事B
- 記事C
の3件だけでテストして、
1件ずつWordPressへ下書き投稿されることを確認してみましょう。
注意事項
n8nはアップデートによって、Loop Over Items、Google Sheets、WordPressノードの画面や設定項目が変更される場合があります。
Loop Over Itemsは以前「Split in Batches」という名前で表示されていたため、古い記事や動画では別名になっている場合があります。
n8nでは多くのノードが複数アイテムをそのまま処理できるため、複数データだから必ずLoop Over Itemsが必要というわけではありません。
複数記事を処理する場合、Expressionで.first()などを使うと、意図せず最初のアイテムを繰り返し参照する可能性があります。各Itemに正しいデータが渡っているかテストしてください。
WordPressへの投稿後にGoogle Sheets更新が失敗すると、再実行時に重複投稿が起きる可能性があります。Post IDやステータスを保存して管理することをおすすめします。
OpenAIなどの有料APIをループ内で利用する場合は、記事数に応じてAPI利用回数と料金が増える場合があります。
本番データを大量処理する前に、必ず少数の記事で正常系・エラー時・再実行を確認してください。
参考・公式情報
- ・n8n公式ドキュメント「Loop Over Items (Split in Batches)」
- ・n8n公式ドキュメント「Google Sheets」
- ・n8n公式ドキュメント「WordPress」
- ・n8n公式ドキュメント「Expressions」
- ・n8n公式ドキュメント「Data Mapping」
- ・WordPress Developer Resources「Posts – REST API Handbook」
n8nやWordPressは継続的に更新されているため、実際の画面と異なる場合は最新の公式ドキュメントも確認してください。
次に読む記事
自分で組み立てる時間を減らしたい方へ
この記事の手順を自分で試す方法に加え、設定の土台として使える販売テンプレートも用意しています。
- WordPress記事入稿 Liteの商品内容・価格を見る(ココナラ)
用意した記事をHTMLに整えてWordPressへ下書き保存。 自動公開はしません。Google Sheets・OpenAI・WordPressの接続設定が必要です。
ご自身の環境に合わせた初期設定が必要です。OpenAIを使う商品ではAPI利用料金が別途かかります。購入前に販売ページの対応範囲をご確認ください。