n8nでGoogleスプレッドシートを使っていると、
「入稿待ちの記事だけ処理したい」
「完了した記事はもう触りたくない」
「同じ記事を何回もWordPressへ送らないようにしたい」
という場面が出てきます。
そんなときに使えるのが、
Google Sheetsの条件指定
または
IFノード
です。
考え方はとてもシンプルです。
たとえばGoogleスプレッドシートに、
記事A:入稿待ち
記事B:完了
記事C:入稿待ち
と並んでいたら、
記事Aと記事Cだけ処理する
ようにします。
この記事では、n8nでGoogleスプレッドシートの「入稿待ち」だけ処理する方法を、中学生でもわかるように実例つきで解説します。
今回やりたいこと
今回の完成イメージは次の通りです。
Google Sheets
↓
記事データを確認
↓
「入稿待ち」だけ選ぶ
↓
WordPressやOpenAIへ送る
たとえばGoogleスプレッドシートがこうなっているとします。
記事A
入稿ステータス:入稿待ち
記事B
入稿ステータス:完了
記事C
入稿ステータス:入稿待ち
この場合、
記事A
記事C
だけ処理します。
記事Bはすでに完了しているので、処理しません。
なぜ「入稿待ち」だけ処理するの?
もし条件を付けずに全部取得すると、
完了した記事
まで再びn8nへ流れる可能性があります。
たとえば、
昨日WordPressへ投稿した記事A
↓
今日も取得
↓
もう一度WordPressへ投稿
となると、同じ記事が2本できることがあります。
そこで、
入稿待ち
=まだ処理していい
完了
=もう処理しない
というルールを作ります。
これだけでも自動化がかなり安全になります。
Googleスプレッドシートの作り方
まずGoogleスプレッドシートに、
入稿ステータス
という列を作ります。
たとえば、
- A列
テーマ - B列
タイトル - C列
完成本文 - D列
入稿ステータス
とします。
実例は次の通りです。
テーマ:n8n初心者向け解説
タイトル:n8nとは?
完成本文:記事本文
入稿ステータス:入稿待ち
別の記事は、
テーマ:ChatGPT活用
タイトル:ChatGPTの使い方
完成本文:記事本文
入稿ステータス:完了
という形です。
ステータスは文字をそろえる
ここは大事です。
たとえば、
入稿待ち
という言葉を使うなら、全部同じ文字にそろえます。
入稿待ち
入稿 待ち
入稿待ち
のように、空白や表記が違うと別の文字として扱われる場合があります。
初心者は、
入稿待ち
処理中
完了
のように、使う言葉を最初に決めておくとわかりやすいです。
方法1:Google Sheetsノード側で絞る
一番わかりやすい方法は、
Google Sheetsノードの時点で「入稿待ち」だけ取得する
方法です。
n8nのGoogle Sheetsノードには、シートの行を取得するGet Row(s)などの操作があります。
n8n公式ドキュメントでも、Google Sheetsノードは行の取得や更新に対応しています。:chatgpt-content-reference{index=”0″}
つまり、
最初から必要な行だけ取る
考え方です。
実例:3件ある場合
Google Sheetsに、
1行目
記事A
入稿待ち
2行目
記事B
完了
3行目
記事C
入稿待ち
があるとします。
Google Sheetsノードで、
入稿ステータス
=入稿待ち
という条件を付けられる場合、
OUTPUTには、
記事A
記事C
だけが出てきます。
記事Bは最初から除外されます。
この方法のメリット
- 最初から対象だけ取得するので、後ろのノードがわかりやすい
- 不要なデータを処理しない
- OpenAIなど有料APIへ不要なデータを送らずに済む
というメリットがあります。
たとえば、
100記事ある
そのうち入稿待ちは3記事だけ
なら、
最初から3記事だけ取得
する方がシンプルです。
方法2:IFノードで分ける
もう1つの方法が、
Google Sheetsでデータを取得
↓
IFノード
↓
入稿待ちか確認
という方法です。
IFノードは、
「もし○○なら、こっちへ進む」
という条件分岐に使います。
n8n公式では、IFノードは条件に応じてワークフローを分けるノードとして案内されています。:chatgpt-content-reference{index=”1″}
IFノードを中学生向けに言うと?
IFノードは、
学校の先生がプリントを分ける
イメージです。
先生が、
「名前が書いてあるプリントは右」
「名前がないプリントは左」
と分けるようなものです。
n8nでは、
入稿待ち
=True側
完了
=False側
のように分けます。
TrueとFalseとは?
IFノードには、
True
False
の2つがあります。
True
=条件に合っている
False
=条件に合っていない
です。
たとえば条件を、
入稿ステータス
is equal to
入稿待ち
にした場合、
記事A:入稿待ち
→True
記事B:完了
→False
記事C:入稿待ち
→True
となります。
IFノードの基本設定
IFノードで見る項目は、
入稿ステータス
です。
たとえば左側に、
{{ $json["入稿ステータス"] }}
を指定します。
比較方法は、
is equal to
つまり、
「同じ」
を選びます。
右側には、
入稿待ち
と入力します。
意味は、
「入稿ステータスが入稿待ちと同じですか?」
です。
n8n公式のIFノードでは、文字列に対してis equal to、contains、is emptyなどの比較が使えます。:chatgpt-content-reference{index=”2″}
実例:WordPress投稿へつなぐ
たとえば、
Google Sheets
↓
IF
↓
True
↓
WordPress
とします。
これで、
入稿待ちの記事だけ
WordPressへ進みます。
False側には何もつながなければ、
完了の記事はそこで終わり
にできます。
OpenAIを使う場合も同じ
たとえば記事本文をAIで作るなら、
Google Sheets
↓
IF
↓
True
↓
OpenAI
↓
WordPress
という流れです。
これなら、
完了済みの記事
に対してOpenAI APIを使わずに済みます。
Google Sheetsで絞る方法とIFの違い
初心者が迷いやすいのがここです。
簡単に言うと、
Google Sheetsで絞る
=最初から必要な行だけ取る
IF
=取ったあとで必要かどうか判断する
です。
たとえば、
クラス30人の中から野球部だけ呼ぶ
のがGoogle Sheets側の絞り込み。
30人全員を集めてから、
野球部なら右
それ以外なら左
と分けるのがIFです。
どちらを使えばいい?
「入稿待ちだけ欲しい」
という目的なら、
Google Sheets側で最初から絞る
方がシンプルなことが多いです。
ただし、
あとで別の条件も確認したい
場合はIFノードが便利です。
たとえば、
入稿待ち
AND
本文が空欄ではない
という条件です。
実例:入稿待ち+本文ありだけ処理する
次の3記事があるとします。
記事A
入稿待ち
本文あり
記事B
入稿待ち
本文なし
記事C
完了
本文あり
WordPressへ送りたいのは、
記事A
だけです。
この場合、
入稿ステータス
=入稿待ち
AND
完成本文
=空ではない
という条件にします。
ANDとは?
ANDは、
「両方OK」
という意味です。
たとえば、
宿題を出した
AND
名前を書いた
両方できていたら提出OK。
どちらか1つでもできていなければNG。
そんなイメージです。
n8n公式のIFノードでも、複数条件をANDでまとめて「すべての条件を満たした場合」に処理できます。:chatgpt-content-reference{index=”3″}
ORとは?
ORは、
「どちらか1つでもOK」
です。
たとえば、
カテゴリがn8n
OR
カテゴリがWordPress
なら、
どちらかに当てはまればTrue
になります。
ただし今回の、
入稿待ちだけ処理
では基本的にANDの方が使いやすいです。
実例:重複投稿を防ぐ条件
さらに安全にするなら、
入稿ステータス = 入稿待ちWP投稿済み ≠ 済Post ID = 空欄
という条件にできます。
意味は、
まだ入稿待ち
まだWordPress投稿済みではない
WordPressのPost IDもない
この3つを満たす場合だけ処理する
ということです。
なぜ3つも見るの?
自動化では途中で失敗することがあります。
たとえば、
WordPress投稿
=成功
Google Sheets更新
=失敗
となる場合です。
すると、
入稿ステータス
=入稿待ち
のままでも、
すでにWordPressには記事がある
可能性があります。
そこで、
WP投稿済み
Post ID
も一緒に確認します。
Post IDとは?
Post IDは、
WordPressの記事番号
です。
たとえば、
Post ID
=845
なら、
845番の記事
という意味です。
Google SheetsにPost IDが入っているなら、
「すでにWordPressへ投稿された可能性がある」
と判断できます。
実際のおすすめ条件
初心者なら、まずは次の条件で十分です。
入稿ステータス
=入稿待ち
慣れてきたら、
入稿ステータス
=入稿待ち
AND
WP投稿済み
≠済
まで追加します。
さらに安全にしたいなら、
Post ID
=空欄
も確認します。
処理が始まったら「処理中」にする
WordPressへ送る前に、
入稿待ち
↓
処理中
へ変更する方法もおすすめです。
流れは、
Google Sheets
↓
入稿待ちだけ取得
↓
処理中へ変更
↓
WordPress投稿
↓
完了へ変更
です。
これなら途中で止まっても、
「一度処理を開始した記事」
だとわかります。
実例:3記事を処理する
Google Sheetsに次の3記事があります。
記事A
入稿待ち
記事B
完了
記事C
入稿待ち
n8nを実行します。
まず記事Aを取得します。
記事A
↓
処理中
↓
WordPress投稿
↓
完了
次に記事C。
記事C
↓
処理中
↓
WordPress投稿
↓
完了
記事Bは最初から完了なので処理しません。
最終的に、
記事A
完了
記事B
完了
記事C
完了
になります。
複数記事の場合はLoop Over Itemsを使うこともある
複数の記事を1件ずつ処理したい場合は、
Loop Over Items
を使う方法もあります。
たとえば、
Google Sheets
↓
入稿待ち3件取得
↓
Loop Over Items
↓
1件目
↓
WordPress投稿
↓
完了
↓
2件目
という流れです。
ただし、n8nでは複数アイテムをそのまま処理できるノードも多いため、
複数件ある
=必ずLoop Over Items
ではありません。
必要な場合だけ使いましょう。
Schedule Triggerと組み合わせると自動になる
さらに、
Schedule Trigger
と組み合わせると、
毎朝8時
↓
Google Sheetsを確認
↓
入稿待ちだけ処理
という自動化ができます。
たとえば、
毎朝8時
↓
入稿待ち0件
↓
何もしない
翌朝8時
↓
入稿待ち2件
↓
2件だけ処理
という動きです。
これで毎回自分でn8nを開かなくてもよくなります。
よくある失敗1:表記が違う
Google Sheetsでは、
入稿待ち
なのに、IFノードでは、
入稿まち
となっていたら一致しません。
ひらがなと漢字の違い
空白
全角・半角
などにも注意しましょう。
よくある失敗2:最後に空白が入っている
見た目は、
入稿待ち
でも、
入稿待ち
のように最後に空白が入っている場合があります。
条件がうまく合わないときは、Google Sheetsのセルを確認しましょう。
よくある失敗3:列名が違う
Expressionで、
{{ $json["入稿ステータス"] }}
としているのに、Google Sheets側が、
ステータス
という列名なら値を取得できません。
列名とExpressionを合わせます。
よくある失敗4:完了済みの記事も流れる
Google Sheetsノードですべての行を取得している場合、
完了の記事もOUTPUTに出ます。
これは必ずしもエラーではありません。
後ろにIFノードがあるなら、
True
=入稿待ち
False
=それ以外
へ正しく分かれているか確認します。
よくある失敗5:False側にWordPressをつないでいる
入稿待ちだけWordPressへ送りたいのに、
False
側へWordPressをつないでしまうと逆になります。
True
=入稿待ち
側につながっているか確認しましょう。
よくある失敗6:ステータスを更新していない
WordPress投稿後に、
入稿待ち
↓
完了
へ変えないと、次回も同じ記事が対象になる可能性があります。
「取得する条件」と「処理後の更新」はセットで考えるのがおすすめです。
よくある失敗7:完了へ変更するタイミングが早い
WordPress投稿前に、
完了
へ変更してしまうと、
WordPress投稿に失敗したのにシートでは完了
という状態になります。
基本は、
WordPress投稿成功
↓
完了へ変更
です。
まず1記事でテストする
初心者は、最初から10記事を入れない方が安全です。
まず、
記事A
入稿待ち
記事B
完了
の2件だけ用意します。
実行して、
記事AだけWordPressへ進む
記事Bは進まない
ことを確認します。
これが成功してから件数を増やします。
OUTPUTを確認する
n8nでは、
「エラーが出ていない」
だけではなく、
OUTPUTの中身
を見ることが大切です。
Google Sheetsノードを実行したら、
本当に入稿待ちだけ出ているか
IFノードなら、
Trueに何件あるか
Falseに何件あるか
を確認しましょう。
自動化では対象を減らすほど安全になる
たとえばGoogle Sheetsに100記事ある場合、
100記事全部をn8nへ流す
より、
入稿待ち2記事だけ取得
する方がわかりやすいです。
処理件数が減れば、
誤投稿
API料金
エラー
のリスクも減らせます。
OpenAI API料金の節約にもなる
もし後ろにOpenAIノードがある場合、
完了済みの記事までAIへ送ると、不要なAPI利用が発生する可能性があります。
入稿待ちだけに絞れば、
必要な記事だけAI処理
できます。
自動化では、
できるだけ早い段階で不要なデータを除く
という考え方も大切です。
WordPress自動入稿では特に重要
WordPress自動投稿では、
同じ記事を2回送る
ことが大きなトラブルになります。
そのため、
Google Sheets
↓
入稿待ちだけ取得
↓
WordPress投稿
↓
完了へ変更
という流れは基本になります。
ココナラのn8nテンプレートについて
私は、
「ChatGPTで作った記事をWordPressへ半自動入稿するn8nテンプレート Lite」
をココナラで公開しています。
このようなWordPress入稿自動化でも、
Google Sheetsで記事を管理し、
入稿待ちの記事だけ処理する
という考え方が重要です。
自分でゼロから作る場合は、
Google Sheetsの取得条件
IFノード
ステータス更新
などを1つずつ設定していきます。
一方、
実際に動くワークフローを見ながら覚えたい
最初から設計する時間を減らしたい
という場合は、完成済みテンプレートから始める方法もあります。
テンプレートでも自分の設定は必要
テンプレートを使えば、
何も変更せず動く
わけではありません。
自分の環境に合わせて、
Google Sheets
列名
ステータス名
WordPress Credential
OpenAI Credential
などを設定する必要があります。
特に、
入稿待ち
完了
などの文字は、自分のシートとワークフローでそろえることが大切です。
初心者はこの順番で作ろう
- Google Sheetsに「入稿ステータス」列を作る
- テスト記事を2件入れる
- 1件を「入稿待ち」にする
- もう1件を「完了」にする
- Google Sheetsノードで取得する
- 必要ならIFノードを追加する
- 「入稿待ち=True」にする
- True側へWordPressをつなぐ
- 投稿成功後に「完了」へ更新する
- もう一度実行して同じ記事が処理されないか確認する
まとめ
n8nでGoogleスプレッドシートの「入稿待ち」だけ処理する方法は、大きく2つあります。
- 1つ目は、Google Sheetsノード側で対象を絞る方法。
- 2つ目は、Google Sheetsで取得したあと、IFノードで分ける方法です。
初心者なら、
「必要な記事だけ最初から取得する」
方法がわかりやすいです。
さらに、
入稿待ち
↓
処理中
↓
完了
というステータス管理を使うと、どこまで処理したのか確認しやすくなります。
WordPress自動入稿なら、
Google Sheets
↓
入稿待ちだけ取得
↓
WordPressへ下書き
↓
完了へ変更
という形から始めるのがおすすめです。
自動化では、
何を処理するか
だけでなく、
「何を処理しないか」
を決めることも重要です。
まずは、
入稿待ち1件
完了1件
の2記事でテストして、
入稿待ちだけが正しく処理されることを確認してみましょう。
注意事項
n8nはアップデートによって、Google SheetsノードやIFノードの画面、操作名、設定方法が変更される場合があります。
この記事では執筆時点のn8n公式ドキュメントをもとに基本的な考え方を解説しています。
Google Sheetsのステータス文字は、ワークフロー側の条件と同じ表記にそろえてください。
WordPressへの投稿前に「完了」へ変更すると、投稿失敗時にも完了扱いになる可能性があります。
OpenAIなど有料APIを後ろにつないでいる場合は、不要な行まで処理するとAPI利用回数が増える可能性があります。
本番データを大量に処理する前に、少ないテストデータでTrueとFalseの両方を確認してください。
参考・公式情報
- n8n公式ドキュメント「Google Sheets」
- n8n公式ドキュメント「IF」
- n8n公式ドキュメント「Expressions」
- n8n公式ドキュメント「Data Mapping」
- n8n公式ドキュメント「Google Sheets credentials」
n8nは継続的に更新されているため、実際の設定画面と異なる場合は最新の公式ドキュメントも確認してください。
次に読む記事
自分で組み立てる時間を減らしたい方へ
この記事の手順を自分で試す方法に加え、設定の土台として使える販売テンプレートも用意しています。
- WordPress記事入稿 Liteの商品内容・価格を見る(ココナラ)
用意した記事をHTMLに整えてWordPressへ下書き保存。 自動公開はしません。Google Sheets・OpenAI・WordPressの接続設定が必要です。
ご自身の環境に合わせた初期設定が必要です。OpenAIを使う商品ではAPI利用料金が別途かかります。購入前に販売ページの対応範囲をご確認ください。