n8nでGoogleスプレッドシートからソーシャルメディアへ

n8nでGoogleスプレッドシートからソーシャルメディアへ

n8nを使ってスプレッドシートから公開する方法、誰も警告してくれない行トラッキングの 問題、そしてCSVインポートのほうが良い答えになる場合を解説します。

スプレッドシートは1か月分の投稿を書くのに手早い場所です。そこから取り出す作業こそ自動化する価値がありますが、必ずしもワークフローである必要はありません。

まず:これはバッチかストリームか

バッチ。 1か月分の投稿を書き終えて、それをキューに入れたいだけの場合です。n8nは不要です。CSVとしてエクスポートしてインポートしましょう。BulkPublishの一括コンポーザーはcontent列に加えて任意のscheduled_atmedia_urlsを読み取ります。2分で終わり、メンテナンスの必要もありません。

ストリーム。 複数の人によって行が継続的に追加され、現れた端から公開すべき場合です。これがワークフローの出番です。

バッチのためにワークフローを構築するのは、ファイルアップロードが一度で済むことに対する恒久的な維持コストです。

ワークフロー

1. スケジュールトリガー、15分または30分ごと。理由は下記の通り、新規行トリガーよりこちらを優先してください。

2. Google Sheetsノード、行を読み取る。

3. Approved = yesかつPublishedが空欄でフィルタする。 2つの条件、どちらも必要です。

4. 列から投稿を組み立てる。

5. BulkPublishノード、Post → Create。

6. シートに書き戻す、Publishedと投稿URLを設定します。

行トラッキングの問題

これが人を引っかける部分で、スプレッドシート特有のものです。

n8nの新規行トリガーは位置を追跡します。誰かがシートを並べ替えたり、行を削除したり、途中に挿入したりすると、トラッキングは実際の状態と一致しなくなり、重複やスキップ、あるいはその両方が発生します。スプレッドシートは絶えず並べ替えられます。そのために存在しているからです。

修正策は位置にまったく依存しないことです。スケジュールでポーリングし、列でフィルタし、公開後に書き戻します。そうすれば並べ替えは無害になります。ワークフローが行数をカウントするのではなく、行から状態を読み取っているからです。

目的
Content投稿本文
Channels対象プラットフォーム
Publish at予約時刻
Media URL任意の添付ファイル
Approvedゲート。yesかそれ以外
Published公開後に書き戻される

Approved列が存在するのは、シートの行が作成された瞬間からワークフローに見えてしまうためです。誰かがまだ入力中であっても同じです。

クォータに注意

スプレッドシートは50行を貼り付けるのを簡単にしてしまい、50行は50件の投稿です。

  • 投稿: Free:3件/日。Pro:30件/日。Business:無制限。
  • APIリクエスト/日: Free:30。Pro:5,000。Business:50,000。
  • チャンネル: Free:3(プラットフォームごとに1)。Pro:30(プラットフォームごとに2)。Business:75(プラットフォームごとに5)。

15分ごとにポーリングするワークフローは、何も公開する前に1日あたり96リクエストを消費するため、フリー階層ではこれを動かせません。

文字数を確認する

スプレッドシートのセルはほとんどのプラットフォームが受け付ける以上のテキストを保持でき、シート上には何の警告も出ません。文字数制限は投稿作成時に検証されるため、切り詰められた投稿ではなく明確なエラーが返ってきますが、ワークフローはそれをどこかで実際に目にする場所にログとして残す必要があります。

まず下書きで

最初の1週間は下書きに流し込みましょう。列のマッピングは失敗しやすい部分で、下書きの一覧を見れば一目瞭然です。

BulkPublishはFacebook、Instagram、TikTok、YouTube、X、Threads、Bluesky、Pinterest、Google Businessプロフィール、LinkedIn、Mastodon、Discord、Telegram、Tumblr、Snapchatの15プラットフォームに公開します。

まとめ

シートが完成した計画であれば、何も構築せずエクスポートしてCSVをインポートしましょう。ライブのキューであれば、新規行トリガーではなくスケジュールでポーリングし列でフィルタしましょう。スプレッドシートは並べ替えられるものであり、位置ベースのトラッキングは重複を生むからです。Approved列でゲートをかけ、公開後に書き戻しましょう。