n8nでWordPressへの記事投稿を自動化できたら、次にやっておきたいのがGoogleスプレッドシートの自動更新です。
たとえば、
- WordPressへ記事を投稿
- Googleスプレッドシートの「入稿ステータス」を完了に変更
- 「WP投稿済み」を済に変更
- WordPressの投稿IDを保存
という流れです。
ここまで作っておくと、
- どの記事が投稿済みなのか
- どの記事がまだ未処理なのか
- どの記事が何番のWordPress投稿になったのか
をGoogleスプレッドシートだけで確認できます。
さらに、同じ記事を何度も投稿してしまう事故も減らしやすくなります。
この記事では、n8nでWordPressへ記事を投稿したあと、Googleスプレッドシートを自動更新する方法を初心者向けにやさしく解説します。
今回作る自動化
完成イメージは次の通りです。
- Google Sheets
- 入稿待ちの記事を取得
- WordPress
- 記事を下書き作成
- Google Sheets
- 元の行を更新
更新する内容は、たとえば次の3つです。
- 入稿ステータス
=完了 - WP投稿済み
=済 - 管理ID
=WordPressのPost ID
つまり、
「投稿したら、その結果を元の管理表へ戻す」
仕組みです。
なぜGoogleスプレッドシートを更新するの?
Googleスプレッドシートを更新しない場合、
WordPressへの投稿は成功
していても、
Google Sheetsではずっと、
入稿待ち
のままになることがあります。
その状態でワークフローをもう一度実行すると、同じ記事がもう一度WordPressへ投稿される可能性があります。
そこで、
- 投稿前
=入稿待ち - 投稿後
=完了
と変更します。
これによって、
「この行はもう処理済み」
と判断できるようになります。
記事管理シートの例
たとえばGoogleスプレッドシートを次のようにします。
- A列
テーマ - B列
カテゴリ - C列
メインKW - D列
タイトル - E列
完成本文 - F列
入稿ステータス - G列
WP投稿済み - H列
管理ID
例:
- テーマ
n8n初心者向け解説 - カテゴリ
n8n - メインKW
n8n 初心者 - タイトル
n8nとは?初心者向けに解説 - 完成本文
記事本文 - 入稿ステータス
入稿待ち - WP投稿済み
未 - 管理ID
空欄
という状態です。
投稿後はこう変える
WordPressへの投稿が成功したら、
- 入稿ステータス
完了 - WP投稿済み
済 - 管理ID
845
のように変更します。
ここで845はWordPressから返ってきた投稿IDです。
WordPressのPost IDとは?
WordPressでは、記事ごとに番号が付きます。
たとえば、
- 記事A
Post ID:845 - 記事B
Post ID:846
という形です。
このPost IDをGoogleスプレッドシートへ保存しておくと、
- あとで記事を更新する
- アイキャッチを設定する
- 投稿内容を確認する
といった処理に使えます。
WordPress REST APIでも、投稿には一意のidが含まれます。
WordPress投稿後のOUTPUTを確認する
まずWordPressノードを実行します。
投稿に成功すると、OUTPUTに記事情報が返ってきます。
その中に、
id
という項目があります。
たとえば、
id:845
なら、845がWordPressのPost IDです。
まずこの数字が取得できているか確認しましょう。
次にGoogle Sheetsノードを追加する
WordPressノードのあとに、
Google Sheets
ノードを追加します。
今度は記事を読み取るのではなく、
更新
するために使います。
n8nのGoogle Sheetsノードでは、既存の行を更新する操作ができます。
どの行を更新するの?
ここが重要です。
Google Sheetsには複数の記事があります。
たとえば、
- 5行目
記事A - 6行目
記事B - 7行目
記事C
という状態です。
WordPressへ記事Bを投稿したなら、
6行目
だけを更新する必要があります。
別の行を更新すると、記事管理が壊れてしまいます。
row_numberとは?
そのときに役立つのが、
row_number
です。
row_numberは、
「Googleスプレッドシートの何行目か」
を表す値です。
たとえば、
row_number:6
なら、
6行目
という意味です。
Google Sheetsから記事を取得したときにrow_numberも一緒に取得しておけば、投稿後に同じ行を更新できます。
基本の流れ
たとえば6行目の記事を取得したとします。
- Google Sheets
row_number:6 - WordPress投稿
Post ID:845 - Google Sheets更新
6行目を更新
という流れです。
これなら別の記事の行を書き換えにくくなります。
Update Rowを使う
Google Sheetsノードでは、
Update Row
またはそれに近い更新操作を使います。
n8nのバージョンによって画面表示が変わる場合がありますが、
「既存の行を更新する」
操作を選びます。
row_numberを指定する
更新対象として、
row_number
を使います。
たとえば前のGoogle Sheetsノードから、
{{ $('自動入稿記事取得').first().json.row_number }}
のように取得できます。
意味は、
「最初に記事を取得したノードのrow_numberを使う」
ということです。
ノード名は自分のワークフローに合わせて変更してください。
なぜWordPressノードの直前データだけでは足りないことがあるの?
ワークフローが長くなると、
Google Sheets
↓
OpenAI
↓
HTML整形
↓
WordPress
のように複数ノードを通ります。
途中のノードによっては、
row_number
がOUTPUTに残っていない場合があります。
そのときは、
元のGoogle Sheetsノードを直接参照
します。
たとえば、
{{ $('自動入稿記事取得').first().json.row_number }}
という形です。
これで元の行番号を使えます。
入稿ステータスを完了にする
Google Sheets更新ノードで、
入稿ステータス
=完了
と設定します。
これは固定値なので、
Fixed
で、
完了
と入力できます。
これで次回ワークフローを実行したときに、
入稿待ち
の記事だけ取得する設定なら、今回処理した記事は対象から外れます。
WP投稿済みを済にする
同じように、
WP投稿済み
=済
と設定します。
これは人間がシートを見たときにもわかりやすくするための項目です。
たとえば、
入稿ステータス
=完了
WP投稿済み
=済
なら、
「処理も投稿も終わっている」
と判断できます。
管理IDへPost IDを保存する
管理IDにはWordPressから返ってきたPost IDを保存します。
たとえばWordPressノード名が、
WP下書き作成
なら、
{{ $('WP下書き作成').first().json.id }}
のように取得できます。
これで、
管理ID
=845
のように保存できます。
完成イメージ
更新後のGoogle Sheetsは、
- テーマ
n8n初心者向け解説 - カテゴリ
n8n - タイトル
n8nとは?初心者向けに解説 - 入稿ステータス
完了 - WP投稿済み
済 - 管理ID
845
という状態になります。
これだけで、記事管理がかなりしやすくなります。
Post IDを保存するメリット
Post IDを保存すると、
- 記事の更新
- アイキャッチ設定
- 記事削除
- 公開状態変更
などに使いやすくなります。
たとえば後から、
管理ID:845
を使って、
WordPressの845番の記事を更新
という処理ができます。
Google Sheets更新ノードの基本構成
初心者なら、まず次の3項目だけ更新すれば十分です。
- 入稿ステータス
=完了 - WP投稿済み
=済 - 管理ID
=WordPressのPost ID
これだけでも実用性は高いです。
タイトルや本文も書き戻すことができる
OpenAIでタイトルや本文を作った場合、
Google Sheetsへ結果を書き戻す
こともできます。
たとえば、
- タイトル
=AIが作ったタイトル - 完成本文
=AIが作った本文 - 入稿ステータス
=完了 - WP投稿済み
=済 - 管理ID
=Post ID
と更新できます。
これならWordPressだけでなく、Google Sheetsにも完成記事を残せます。
AIの結果を保存しておくメリット
Google SheetsにAIの結果を残しておけば、
- あとから確認できる
- 再利用できる
- 修正前後を比べられる
- WordPressに何を送ったか確認できる
というメリットがあります。
自動化では、
「どんなデータを処理したか」
を残しておくとトラブル時に助かります。
Expressionを間違えないようにする
たとえば、
メインKW
を更新したいのに、
{{ $('記事メタ解析').first().json['カテゴリ'] }}
を指定すると、カテゴリの値がメインKW列へ入ってしまいます。
正しくは、
{{ $('記事メタ解析').first().json['メインKW'] }}
のように、
保存先と参照元を合わせる
必要があります。
OUTPUTを確認しながら設定しましょう。
よくある失敗1:別の行を更新してしまう
最も注意したいのがこれです。
row_numberが間違っていると、別の記事の行を書き換える可能性があります。
たとえば、
記事Aを投稿したのに、
記事Bのステータスを完了にしてしまう
という事故です。
必ずテスト用データで確認しましょう。
よくある失敗2:Post IDではなく別のidを保存する
ワークフローには複数のidが出てくることがあります。
たとえば、
- Google Sheets側のID
- 画像のMedia ID
- WordPressのPost ID
です。
管理IDへ保存したいのがWordPressの投稿IDなら、
WP下書き作成ノードのid
を参照します。
画像アップロードノードのidを入れると、それはMedia IDになってしまいます。
よくある失敗3:投稿前に完了へ変更してしまう
Google Sheetsのステータス更新は、
WordPress投稿成功後
に行うのがおすすめです。
もし先に、
入稿ステータス
=完了
へ変更してからWordPress投稿が失敗すると、
シートでは完了
なのに、
WordPressには記事がない
状態になります。
基本は、
WordPress投稿成功
↓
Google Sheets更新
の順番です。
よくある失敗4:Google Sheets更新だけ失敗する
反対に、
WordPress投稿成功
↓
Google Sheets更新失敗
となることもあります。
この場合、
WordPressには記事がある
でもシートは入稿待ち
という状態になります。
もう一度実行すると、同じ記事を投稿する可能性があります。
これが重複投稿の原因の1つです。
処理中ステータスを使うと安全性が上がる
より安全にするなら、
入稿待ち
↓
処理中
↓
完了
という3段階にします。
たとえば、
- 処理開始
- Google Sheetsを「処理中」に変更
- WordPress投稿
- 成功
- 「完了」に変更
という流れです。
途中でエラーになれば、
処理中
のまま残ります。
人間が見ても、
「この行は途中で止まった可能性がある」
と気づきやすくなります。
さらにエラー列を作る方法もある
たとえば、
エラー内容
という列を追加しておきます。
正常終了なら空欄。
失敗したら、
WordPress認証エラー
本文生成失敗
などを記録します。
ワークフローが大きくなってきたら便利です。
同じ記事の重複投稿を防ぐには?
基本は、
入稿ステータス
=入稿待ち
だけを取得することです。
投稿後は、
完了
へ変更します。
これにより、次回は取得されなくなります。
さらに、
WP投稿済み
=済
Post IDあり
も確認できるようにすると、より安全です。
IFノードで二重チェックする方法
WordPress投稿前にIFノードを入れて、
入稿ステータス
=入稿待ち
AND
WP投稿済み
≠済
という条件にする方法もあります。
つまり、
「まだ投稿していない記事だけ進める」
という確認です。
Post IDがあるなら投稿しない方法もある
さらに安全にするなら、
管理IDが空欄
という条件も追加できます。
たとえば、
入稿待ち
AND
WP投稿済みではない
AND
管理IDが空
なら投稿する。
という形です。
Post IDがすでに入っている記事は、
「WordPress記事がすでに存在する可能性が高い」
と判断できます。
Schedule Triggerと組み合わせる場合は特に重要
毎日自動でワークフローを動かす場合、
Google Sheetsのステータス管理はかなり重要です。
たとえば、
毎朝8時
↓
Google Sheets確認
↓
入稿待ちだけ取得
↓
WordPress投稿
↓
完了へ更新
という流れです。
ステータス更新がなければ、翌日も同じ記事を投稿する可能性があります。
Loop Over Itemsを使う場合
複数の記事を1件ずつ処理する場合は、
Google Sheets
↓
Loop Over Items
↓
WordPress
↓
Google Sheets更新
↓
Loop Over Itemsへ戻る
という構成にできます。
この場合も、
各記事ごとに、
- Post ID保存
- ステータス更新
を行います。
全部終わってからまとめて更新するより、1件成功するたびに更新する方が状況を把握しやすい場合があります。
1件ずつ更新するメリット
たとえば10件の記事を処理して、
6件目でエラー
になったとします。
1件ずつ更新していれば、
- 1〜5件目
=完了 - 6件目
=入稿待ちまたは処理中 - 7〜10件目
=未処理
とわかります。
どこまで成功したか確認しやすくなります。
一括処理ではAPI料金にも注意
WordPress投稿だけなら大きな問題にならなくても、
- OpenAI
- 画像生成
- 外部API
などを一緒に使う場合、記事数だけAPI処理が発生することがあります。
Google Sheetsに大量の記事がある場合は、
最初は1件
次に3件
というように少しずつ試しましょう。
自動更新できると管理表がダッシュボードになる
Google Sheetsをきちんと更新すると、
ただの記事一覧
ではなく、
自動化の管理画面
として使えるようになります。
たとえば、
- 入稿待ち
3件 - 処理中
1件 - 完了
20件 - WP投稿済み
20件
のように確認できます。
どこまで自動化が進んでいるのか一目でわかります。
実際のおすすめ構成
初心者向けなら、
- Google Sheets
記事取得 - OpenAI
必要な処理 - WordPress
下書き作成 - Google Sheets
更新
で十分です。
慣れてきたら、
- Google Sheets
記事取得 - Google Sheets
処理中へ変更 - OpenAI
- WordPress
- Google Sheets
完了へ変更
と安全性を高められます。
Google Sheetsを更新するだけでも価値がある
自動化というと、
- AI生成
- 画像生成
- 完全自動投稿
など派手な機能に目が行きがちです。
でも実際には、
- 投稿後にステータスを更新する
- Post IDを保存する
といった地味な処理がとても重要です。
ここがないと、
- 何を処理したかわからない
- 同じ記事を再処理する
- エラー復旧が難しい
といった問題が起こりやすくなります。
ココナラのn8nテンプレートについて
私は、
「ChatGPTで作った記事をWordPressへ半自動入稿するn8nテンプレート Lite」
をココナラで公開しています。
このテンプレートでは、
Google Sheetsで記事を管理
↓
n8nで処理
↓
WordPressへ下書き
↓
Google Sheetsへ結果を戻す
という考え方を使っています。
今回の記事で解説した、
- 入稿ステータス更新
- WP投稿済み更新
- Post ID保存
は、WordPress入稿を安定して運用するうえで重要な部分です。
テンプレートを使うメリット
自分でゼロから作る場合、
- どの行を更新するか
- row_numberをどう扱うか
- Post IDをどこから取るか
- どのタイミングで完了にするか
などを1つずつ設定する必要があります。
完成済みテンプレートを使えば、
「どうつなげればいいのか」
を実際のワークフローを見ながら確認できます。
ただし、自分のGoogle SheetsやWordPressに合わせた設定変更は必要です。
初心者はこの順番で作ろう
おすすめは次の順番です。
- Google Sheetsから1記事取得する
- row_numberを確認する
- WordPressへ下書き投稿する
- WordPressのPost IDを確認する
- Google Sheets更新ノードを追加する
- row_numberで元の行を指定する
- 入稿ステータスを完了にする
- WP投稿済みを済にする
- 管理IDへPost IDを保存する
- Google Sheetsの実際の行を確認する
まずは1記事だけでテストしましょう。
まとめ
n8nでWordPressへ記事を投稿したあと、Googleスプレッドシートを自動更新しておくと、記事管理がかなり楽になります。
基本は、
WordPress投稿
↓
Post ID取得
↓
Google Sheets
↓
元の行を更新
です。
Google Sheetsでは、
- 入稿ステータス
=完了 - WP投稿済み
=済 - 管理ID
=WordPress Post ID
などを保存します。
そして重要なのが、
row_number
です。
row_numberを使えば、
「最初に取得した記事と同じ行」
を更新できます。
投稿後のGoogle Sheets更新まで作っておくことで、
- 重複投稿の防止
- 処理状況の確認
- WordPress記事とのひも付け
- エラー時の原因確認
がしやすくなります。
記事をWordPressへ送るところだけで終わらず、
「結果を管理表へ戻す」
ところまで作ると、n8nの自動化がより実用的になります。
注意事項
n8nやGoogle Sheetsノードはアップデートによって、操作名や設定画面が変更される場合があります。
この記事では執筆時点のn8n公式ドキュメントをもとに、基本的な考え方を解説しています。
Google Sheetsを更新する際は、必ず正しい行を指定できているか確認してください。row_numberや一致条件を誤ると、別の記事データを書き換える可能性があります。
WordPressへの投稿成功後にGoogle Sheets更新が失敗した場合、再実行によって同じ記事が重複投稿される可能性があります。
本番運用では、
入稿待ち
処理中
完了
などのステータス管理や、Post IDの保存を検討してください。
大量の記事を処理する前に、必ずテスト用データ1件で動作確認してください。
参考・公式情報
- n8n公式ドキュメント「Google Sheets」
- n8n公式ドキュメント「Expressions」
- n8n公式ドキュメント「Data Mapping」
- n8n公式ドキュメント「Loop Over Items」
- n8n公式ドキュメント「IF」
- WordPress Developer Resources「Posts – REST API Handbook」
n8n、Google Sheets、WordPressは継続的に更新されているため、実際の画面と異なる場合は各サービスの最新公式ドキュメントも確認してください。
次に読む記事
自分で組み立てる時間を減らしたい方へ
この記事の手順を自分で試す方法に加え、設定の土台として使える販売テンプレートも用意しています。
- WordPress記事入稿 Liteの商品内容・価格を見る(ココナラ)
用意した記事をHTMLに整えてWordPressへ下書き保存。 自動公開はしません。Google Sheets・OpenAI・WordPressの接続設定が必要です。
ご自身の環境に合わせた初期設定が必要です。OpenAIを使う商品ではAPI利用料金が別途かかります。購入前に販売ページの対応範囲をご確認ください。