湯川です。
このページでは、Google SpreadsheetとGoogle Apps Script(GAS)を使って、X(旧Twitter)に自動投稿するツールの設定と使用方法を図解入りで説明します。
このツールを使うことで、投稿内容を事前に準備し、指定した時間に自動投稿することができます。
必要なもの
ツールのダウンロード
本ツールのスプレッドシートテンプレートとGASスクリプトは、以下の条件を満たした方にご提供しています。
- 湯川のメルマガに登録する
- 当サイトで紹介しているアドモール商材を当サイト経由で累計2点以上購入する
- ツールの申請をメールでいただく
利用に必要なアカウント
- Googleアカウント(Google Spreadsheet用)
- Xアカウント(APIアクセス用)
- API: Application Programming Interface の略。ソフトウェア同士を接続するための仕組み。
- Google Apps Script (GAS): Googleのサービスを自動化するためのスクリプト言語。
なお、当ページではGoogleアカウント、Xアカウントの開設、PC・スマートフォンのブラウザの使い方といった、インターネットでビジネスをする上での基礎的な内容については解説しておりませんので、分からないことがあればGoogleやChatGPTを使って適宜ご自身でお調べいただきますようお願いいたします。
ツールの仕様
このGoogle Apps Script(GAS)ツールは、Google スプレッドシートから指定したテキストを自動的にXに投稿するためのものです。
主な機能
- スプレッドシートに入力した内容を自動的にXに投稿
- 投稿履歴の自動記録と管理
- 安全なOAuth2認証を使用した接続
- 指定した時間に自動投稿するスケジューリング
Google Spreadsheetファイル
Google Spreadsheetファイルは
- [X投稿リスト]シート:Xにこれから投稿する文章を蓄積する
- [X投稿履歴]シート:Xに投稿したポストと時刻をログとして表示する
で構成されています。
動作としては、
- [X投稿リスト]に投稿文を入力
- トリガーの投稿時間設定に応じて、[X投稿リスト]の上の行から順番にXに自動投稿
- 投稿が[X投稿履歴]に転記された上で[X投稿リスト]から投稿が削除され、次の投稿文が一番上の行に順繰りで上がる
Google Apps Script(GAS)を実行することで、Spreadsheetの方で指定した時間もしくは間隔毎に、投稿文が[X投稿リスト]シートの上の行から順番にXに自動投稿されていくという流れです。
投稿後はX投稿履歴シートに投稿文が転記され、次の行の投稿文が次回自動投稿される仕様になっています。
X APIとの連携について
X APIとの連携ではX_CLIENT IDとX_CLIENT SECRETというキーで関連づけています。
[拡張機能] → [App Script]をクリックすると出てくるスクリプトエディタのパラメータ欄で両値を設定します。

投稿時間の設定について
Apps Scriptのトリガー設定画面から、投稿時間や間隔を設定することができます。
設定の際は、まずトリガー設定画面の「新しいトリガー作成します。」リンクを押します。

トリガー追加ウィンドウが表示されますので、下記の通り設定して保存することで、任意の時間帯での投稿設定が可能です。
- 実行する関数:sendXPost
- 実行するデプロイ:Head
- イベントのソースを選択:時間主導型
- 時間ベースのトリガーのタイプを選択:日付ベースのタイマー
- 時刻の選択:<任意の時間帯を指定>
STEP 1: Google Spreadsheetの初期設定手順
Google Spreadsheetの設定を行います。ここではスプレッドシートを自分の環境にコピーし、APIとの連携準備を行います。
Google Spreadsheetの初期設定で必要なこととしては、大きく分けて
- 事前準備
- XのAPIの申請とAPIキーの取得
- Google Apps Scriptの認証と初回ログイン
の3つの工程に分かれています。
STEP 1-1. 事前準備
ツールの入手
まず、X用のスプレッドシートテンプレートを入手します。ツールは以下の条件を満たした方にご提供しています。
- 湯川のメルマガに登録
- 当サイト紹介商材を当サイト経由で累計2点以上購入
- ツールの申請をメール
条件を満たしてツールを入手されましたら、以下の手順に進んでください。
まず、Google Spreadsheetのテンプレートを自分のアカウントにコピーし、必要な権限設定を行います。
手順
① X用のスプレッドシートテンプレートにアクセスする。
(配布されたURLを使用)
② 右上のログインボタンを押し、Googleにログインする(アカウントがない場合は作成)。

③ ログイン後、[ファイル]→[コピーを作成]を選択する。

④ 自分が管理しやすいように名前を変えて、[コピーを作成]ボタンを押す。

STEP 1-2. XのAPI申請とAPIキーの取得
次に、X(旧Twitter)のAPIを取得します。
これにより、Google SpreadsheetのプログラムからXへの投稿が可能になります。
Xへの投稿を自動化するには、X API(旧Twitter API)のキーの取得が必要です。このAPIを利用すれば、プログラムから投稿操作が可能になります。
XのAPIは3種類のプランがあります。
- 無料:500件/月投稿まで
- ベーシック:3,000件/月投稿まで(月額200ドル)
- プロ:300,000件/月投稿まで(月額5000ドル)
こちらはアカウントごとの制限になりますので、無料プランなら1日あたり15~16件まで投稿が可能です。
投稿回数を増やしたい場合は有料プランが必要ですが、複数のアカウントを使い分けるなら、無料プランでも十分間に合います。
以下、XのAPIキーの取得手続きを解説します。
手順
① X Developer Platformにアクセスする。
https://developer.x.com/en/apps
② Xのアカウント名とパスワードを入力する。

③ 二段階認証などのアカウント認証を求められた場合は、指示に従って操作を行う。
④ ログイン後、右上の[Create an App]ボタンをクリックする。

⑤ [Apply]ボタンを押す。

⑥ 「Sign up for Free Account」を選択(表記が小さいため見逃さないように注意)

⑦ テキスト欄にAPIの用途を入力し、3つのチェックを入れて[Submit]ボタンを押す。
I am using the X API’s tweet functionality to post content from my spreadsheet. Specifically, I will use a script that reads the first item from a spreadsheet and posts it automatically on a scheduled basis. This tool only uses the post feature and does not use retweet, like, or analyze X accounts or content.
【日訳】
X APIのポスト機能を使用して、スプレッドシートからコンテンツを投稿しています。具体的には、スプレッドシートから最初の項目を読み取り、スケジュールに基づいて自動的に投稿するスクリプトを使用します。このツールは投稿機能のみを使用し、リツイート、いいね、Xアカウントやコンテンツの分析は行いません。

⑧ 「Projects&Apps」→「Default project~の下にある数字の羅列」をクリックする。

⑨ [Setup]ボタンをクリックする。

⑩ 「App permissions」で「Read and write」を選択、「Type of App」で「Web App, Automated App or Bot」を選択する。


⑪ 「App info」の「Callback URL」にはコールバックURL、「Website URL」に自分のブログURL(もしくはXアカウント)のURLを入力する。

1. Google Spreadsheetの[拡張機能]→[Apps Script]をクリック

2. Apps ScriptのウィンドウのURLのprojectsとeditの間の文字列がスクリプトIDになる。

⑫ [Save]ボタンを押す。

⑬ [Yes]を押す。

⑭ 「Client ID」と「Client Secret」の情報をコピーし、AppScriptエディタの「const X_CLIENT_ID」と「const X_CLIENT_SECRET」のシングルクオーテーションの中にそれぞれ貼り付けてApp Scriptの「保存」マークを押す。


⑮ 「Done」を押すと再び「Client Secret」が表示されるので、App Scriptエディタに反映できているかを確認する。

コールバックURLで入力する「スクリプトID」は、Google SpreadsheetのURLにある文字列ではなく、Google Spreadsheetから起動したApp ScriptエディタのURLの中に入っている文字列になります。
また、コールバック関数は
https://script.google.com/macros/d/[スクリプトID]/usercallback
という形式になっており、
App ScriptエディタのURL
https://script.google.com/u/0/home/projects/[スクリプトID]/edit
とは異なりますのでご注意ください。
STEP 1-3. Google Apps Scriptの設定と認証
API連携の設定が済んだら、Google Apps Scriptの設定と認証を行います。この手順でXとの接続を確立します。
手順
① 「デバッグ」の横にfirstLoginX関数が実行されていることを確認し、[実行]ボタンを押す。

② [権限を確認]ボタンをクリックする。

③ Gmailアカウントにログインする。

④ 「このアプリはGoogleで確認されていません」という表示が出たら、[詳細]を押す。

⑤ 「XPost(安全ではないページ)に移動」をクリックする。

⑥ チェックマークをすべて選択し、[続行]ボタンを押す。

⑦ 下記のログが表示された場合は、もう一度Apps Scriptのエディタメニューの[実行]ボタンを押し、firstLoginXを実行する。(求められなかった場合は⑧に進む)

⑧ 実行ログに表示されるhttps://以下の文字列をすべてコピーし、URLに貼り付ける。

⑨ Xにアカウント名とパスワードを入力して再びログインする。

⑩ [Authorize App]もしくは[アプリを許可]ボタンを押す。

⑪ もし再びGmailアカウントへのログインを求められた場合は、メールアドレスとパスワードを入力してログインする。(求められなかった場合は⑫に進む)

⑫ Success!と表示されていることを確認する。

STEP 2: 動作確認と自動投稿設定
すべての設定が完了したら、実際に投稿できるかどうか確認し、自動投稿設定を行います。
STEP 2-1. 動作確認
まずはテスト投稿を行って、APIの登録ができたかどうかを確認しましょう。
手順
① スプレッドシートの[X投稿リスト]のA1とA2に文字列を記入する。

② 「デバッグ」の右横の関数をsendXPostに指定し、[実行]ボタンを押し、実行ログが更新されることを確認する。


③ [X投稿履歴]シートに投稿したポストが表示されているかを確認する。

④ 再びsendXPostの実行ボタンを押すと、二つ目のポストが投稿される。

⑤ ポストがきちんと投稿されていることを確認する。

複数の投稿を1つのスレッド(ツリー)にまとめるには、X投稿リスト
のB列に同じ文字列を入力します。
■設定手順
- A列に投稿内容を書く
- B列に識別用の文字列を入力する
- 同じツリーにしたい投稿には、同じ文字列を使う
■具体例
A列 | B列 |
投稿文テスト1 | t1 |
投稿文テスト2 | t1 |
投稿文テスト3 | t2 |
投稿文テスト4 | t2 |
■結果
この設定により、以下のようにツリー表示されます。
ツリー1(t1グループ)
- 投稿文テスト1
- └ 投稿文テスト2(リプライとして表示)
ツリー2(t2グループ)
- 投稿文テスト3
- └ 投稿文テスト4(リプライとして表示)
■注意点
- ツリー形式にしない場合は、B列を空欄にしてください
- 識別文字列は英数字何でもOK
- 同じ文字列が連続している投稿がひとつのツリーになります
STEP 2-2. 自動投稿
次に、自動投稿のスケジュールを設定します。
この設定により、定期的に投稿が行われるようになります。
手順
① AppsScript画面で[トリガー]ボタンをクリックする。

② 「ダッシュボードを表示」を押す。

③ 「新しいトリガーを作成します」をクリックする。

④ 以下の要領でトリガーを作成し、保存を押す。

⑤ セキュリティ警告が表示されたら「許可」を押す。
⑥ 以下のように「トリガー一覧」に追加されていることを確認する。

例えば毎日朝・昼・晩の3回投稿したい場合は、上記の操作を3回行い、各々の「時刻の選択」のプルダウンメニューで朝・昼・晩の時間帯を指定して保存すればOKです。
ツール利用時の注意事項
ツールの利用にあたり、以下の注意事項を必ず厳守してください。
① Xの投稿間隔について
Xユーザーの挙動を監視するBOTは厳しく、不自然な動作があると凍結・ロックされてしまうリスクが高いです。
URL付きのポストを投稿する場合は、多くても1日2~3回程度の投稿に留めてください。
URLなしの投稿を併用する場合であっても、投稿毎の間隔は最低でも1~2時間以上空けるようにトリガー設定を行ってください。
② APIの投稿数の上限について
XのAPIの無料プランでは、1ヶ月に投稿できるポストが1アカウントあたり500投稿に制限されます。
31日で割ると、1日あたりの投稿数の上限は16になりますので、1日の投稿数が16を超えないようにご注意ください。
ご自身の環境に合わせたカスタマイズをするときに動作検証で動かす際は、1日の投稿数が16を超えないようにするか、別のアカウントでテストすることをおすすめします。
よくあるトラブルと解決方法
ツールの設定や利用時に発生する可能性のある問題と、その解決方法をご紹介します。
【問題1】API認証でエラーが出る
以下の3点を確認してください。
- コールバックURLが正しく設定されているか
- スプレッドシートのApp ScriptにX用のX_CLIENT_IDとX_CLIENT_SECRETを入力できているか
- App Scriptで設定したX_CLIENT_ID、X_CLIENT_SECRETが紐づいているアカウントとログインしたアカウントが同じになっているか
特に、複数のXアカウントのAPI設定を連続して行う場合は、今設定しようとしているアカウントと別のアカウントを混同しないように注意してください。
コールバックURLで入力する「スクリプトID」は、Google SpreadsheetのURLにある文字列ではなく、Google Spreadsheetから起動したApp ScriptエディタのURLの「https://script.google.com/u/0/home/projects/[スクリプトID]/edit」に入っている文字列になります。
また、コールバック関数は
https://script.google.com/macros/d/[スクリプトID]/usercallback
という形式になっており、
App ScriptエディタのURL
https://script.google.com/u/0/home/projects/[スクリプトID]/edit
をそのまま入力するとエラーになりますのでご注意ください。
【問題2】Xへの投稿が実行されない
以下の3点を確認してください。
- 「トリガー一覧」でトリガーが正しく設定されているか
- XアカウントのAPIアクセス権限が有効になっているか
- Google Apps Scriptのログでエラーメッセージを見る
既存の投稿と同じポストをしたり、無料アカウントで140字を超える投稿しようとした場合は、Apps Scriptのログでエラーが出ます。
【問題3】その他のエラー、原因が分からない
インターネット回線が混雑していると、次の処理の画面遷移に間に合わなくなって止まってしまうケースがあります。
Google Apps Scriptのログでエラーメッセージを確認し、適宜時間調整をしてください。
投稿の段階で問題が発生した場合は、サポート連絡先までご連絡ください。
ご連絡の際は、ログをご参照いただき、
- どの関数を実行したか
- エラーメッセージ
- 何度も再現するか、もしくは再現するときとしないときがあるのか
の3点を併せて教えていただけますと助かります。
よくある質問
- 「Xプレミアム」は必須ですか?
-
140字以内の投稿であれば無料アカウントでもご利用いただけます。
ただし、140字以内の制限を解除したい場合はXプレミアムが必須になります。
- 複数のXアカウントで使用できますか?
-
1つのスプレッドシートにつき1つのXアカウントのみ対応しています。
複数アカウントに投稿したい場合は、アカウントごとにスプレッドシートを作成してください。
- 投稿に画像を添付できますか?
-
現在のスクリプトはテキスト投稿のみ対応しています。
- ツリー形式の投稿に対応していますか?
-
はい、対応しています。ただし、すでに投稿されているポストに対してリプライを入れる機能はありません。
- 投稿の間隔を変更するには?
-
トリガー設定を開き、既存のトリガーを削除して新しい時間設定で再作成してください。
複数のトリガーを設定することで、1日に複数回投稿することも可能です。
口コミの投稿はこちら(直接のご相談はLINE)