Twitter API × スプレッドシート × GAS(Google Apps Script)を使って、Xに自動投稿する方法を解説します!
誰でも無料でXに自動投稿ができる超有料級の情報です。
Twitter APIの開発アカウントを作成し、Freeプランを契約することで実現できます。
英語表示なのでとっつきにくいのですが、API取得と設定ができれば、後は投稿を自動化できますよ。
この自動投稿機能はテキストのみの投稿です。「画像付きはこちら」を使ってください。
目次
Twitter API × スプレッドシート × GASを使った自動投稿について

このプログラムは、Google Apps Script(GAS)を使って、Googleスプレッドシートの内容をX(旧Twitter)に自動投稿する仕組みです。
スプレッドシートには、各行に日付(1〜31)とその日の投稿内容(朝・昼・夕・夜)を記載しておきます。
スクリプトを実行すると、その日の日時に合った投稿内容が自動でXに投稿されます。
1日に最大4回の投稿が可能で、以下の時間帯ごとに内容を切り替えられます(31日 × 4回 = 最大124投稿)。
- 朝(5〜12時)
- 昼(12〜15時)
- 夕方(15〜18時)
- 夜(18〜24時)
Xの投稿イメージはこちら。

実行に必要なもの一覧
X(旧Twitter)の自動投稿を実現するにあたり、下記のものが必要になります。
X DeveloperアカウントとTwitter APIの取得が一番大変だと思います。
- Google関連
- Googleアカウント
- Googleスプレッドシート
- Google Apps Script(一式)→ ダウンロードはこちら
- X(Twitter)関連
- Xアカウント
- X Developerアカウント → 発行方法こちらの記事を参照
- Twitter API(キー、トークン)
大まかな作成手順
大まかな作成手順は以下のとおり。

- Google Apps Script用スプレッドシートを作成する
- スプレッドシートにGoogle Apps Script(GAS)を設定する
- Twitter APIのキーやトークンを登録
- アプリケーションを認証する(初回のみ)
- 投稿内容をスプレッドシートに記入
- テスト実行する
- トリガーを設定して自動化する
スプレッドシートを使ってGoogle Apps Scriptを作成する方法

ここからは、実行に必要なものが全てそろった前提で、詳細な作成手順を説明していきます。
手順1)スプレッドシートを作成する
Googleスプレッドシートを作成して「拡張機能」>「Apps Script」をクリックします。

手順2)Google Apps Scriptを作成する
自動投稿するスクリプトを作成していきます。
ダウンロードしたGoogle Apps Script(一式)を使います。
- コード.gs(自動で作成される)
- すでに書かれているコードを全て選択して削除する
- 次に「scheduledTweetTxtOnly.gs」の中身をコピーして貼り付けて保存する

次に「コード.gs」の中にあるKeyとTokenを取得したものに変更して保存してください。
登録するKeyとTokenは、「Twitter API」で発行したものです。
- TWITTER_CONSUMER_KEY:取得したAPI Key
- TWITTER_CONSUMER_SECRET:取得したAPI Key Secret
- TWITTER_ACCESS_TOKEN:取得したAccess Token
- TWITTER_ACCESS_TOKEN_SECRET:取得したAccess Token Secret
- CLIENT_ID:取得したClient ID
- CLIENT_SECRET:取得したClient Secret
※Bearer Tokenは使いません。
変更する場所は、「コード.gs」の下記の場所です。

手順3)その他に必要なGoogle Apps Scriptを作成する
次に下記の4つのファイルを作成してください。
「+」>「スクリプト」でファイルを作成して、すでに書かれているコードを全て選択して削除した後に、ダウンロードしたファイルから、同じファイル名の内容をコピーして貼り付けます。
- OAuth2.gs
- Strage.gs
- Service.gs
- Utilities.gs

手順4)アプリケーションの認証を行う
このアプリケーションを、Xで使えるようにするための認証を行います。
コード.gsを選択した状態で、リストから「main」を選択して、「実行」をクリックしてください。

「承認が必要です」と表示されたら「権限を確認」をクリック。

Googleスプレッドシートを作成したGoogleアカウントを選択。

「このアプリはGoogleで確認されていません」と表示されたら「詳細」をクリックして「無題のプロジェクト(安全ではないページ)に移動」をクリックしてください。

「すべて選択」にチェックを入れて「続行」をクリック。

画面下の方に「実行ログ」が出力されます。
正常に実行が完了しているか確認してください。
正常に終了していた場合、「以下のURLで認証してください」と書かれているURLを全てコピーしてください。

コピーしたURLを、ブラウザの新しいタブに貼り付けてアクセスすると、「X(旧Twitter)へのログイン画面」が表示されます。
Twitter APIを発行したアカウントと同じアカウントで、ログインしてください。

アクセス承認画面が表示されたら「アプリにアクセスを許可」をクリック。

「認証成功!」と表示されれば、画面は閉じてOKです。
これでアプリケーションの認証作業は完了です。

スプレッドシートを編集して投稿を作成する

スプレッドシートを編集して、投稿する内容を作成しましょう。
スプレッドシートの「列」と、そこに「設定する内容」は以下のとおりです。
A列で指定した日付で、B~E列の時間帯に、一つのメッセージを投稿できます(4投稿/日)。
セルが空であれば、投稿されません。
スプレッドシートの列 | 内容 | 作成する内容 |
---|---|---|
A列 | 日付 | 数字で1~31を指定 |
B列 | 5~12時まで(11時59分59秒)に表示するメッセージ | テキスト、絵文字、リンクなどで投稿を作成 |
C列 | 12~15時まで(14時59分59秒)に表示するメッセージ | テキスト、絵文字、リンクなどで投稿を作成 |
D列 | 15~18時まで(17時59分59秒)に表示するメッセージ | テキスト、絵文字、リンクなどで投稿を作成 |
E列 | 18~24時まで(23時59分59秒)に表示するメッセージ | テキスト、絵文字、リンクなどで投稿を作成 |
スプレッドシートの作成イメージはこちら。

手順1)シート名を変更する
最初に、Googleスプレッドシートのシート名を「投稿メッセージリスト」に変更してください。

手順2)投稿内容を作成する
シートのA列のセルは「日付」で、1~31の数字です。
B~E列のセルには、「投稿内容」を書き込みます。
テキストや絵文字などを使って自由に作成できます(画像は投稿できません)。
- B列:朝用投稿(5〜11時59分59秒)
- C列:昼用投稿(12〜14時59分59秒)
- D列:夕方用投稿(15〜17時59分59秒)
- E列:夜用投稿(18〜23時59分59秒)
下記は、1日~31日の5時~12時までのサンプルメッセージです。
手順3)テスト投稿
テスト投稿で、実際に投稿できるかを確認しましょう。
リストから「scheduledTweet」を選択して「実行」をクリックしてください。
実行する時は時間帯に注意してください。空のセルの場合は何も投稿されません。

実行ログが正常に終了していることを確認してください。

自分のXアカウントにログインして、投稿されているかを確認してください。

自動投稿を設定する方法

今までは「投稿する仕組み」で、ここからは、Xに自動投稿するための設定(トリガー)を行います。
手順1)トリガーを設定する
Apps Scriptの左メニューから「トリガー」をクリックしてください。
次に画面下の「トリガーを追加」をクリックします。

手順2)トリガー内容を入力する
トリガーの内容を下記のように設定して、「保存」をクリックしてください。
項目 | 設定内容 |
---|---|
実行する関数を選択 | scheduledTweet |
イベントのソースを選択 | 時間主導型 |
時間ベースのトリガーのタイプを選択 | 日付ベースのタイマー |
時刻を選択 | 投稿したい時間をリストから指定 |

保存が完了すると登録したトリガーが表示されます。

手順3)トリガー内容を4つ登録する
手順2を繰り返して、投稿したい時間のトリガーを設定しましょう。
トリガーは下記の時間帯に1つ設定できます(最大4つ)。
- 5~12時まで(11時59分59秒)の範囲で1つ
- 12~15時まで(14時59分59秒)の範囲で1つ
- 15~18時まで(17時59分59秒)の範囲で1つ
- 18~24時まで(23時59分59秒)の範囲で1つ
なお、同じ時間帯にトリガーを2つ設定すると、エラーにはなりませんが、同じ内容が2つ投稿されてしまうので注意してください。
例:6時~7時にトリガーを1つ、10時から11時にトリガーをもう一つ設定した場合
5~12時まで(11時59分59秒)の範囲にトリガーが2つあるため、同じ内容が2回投稿されてしまいます。
これで全ての設定が完了です。
トリガーで設定した時間になると、自動でXに投稿されます。
シートの内容を更新しなければ、翌月も同じ内容が投稿されるので、必要に応じて変更してください。
よくある質問
時間通りに実行されない
トリガーの設定範囲が5時~6時のように、1時間の範囲になっているため、5時ぴったりに実行するということはできません(Googleの仕様です)。
投稿が表示されない
設定したキーの場所が間違っていないかどうか確認しましょう。
- API KeyやAPI Key Secretは「TWITTER_CONSUMER_KEY」と「TWITTER_CONSUMER_SECRET」に設定します(Client IDやClient Secretではありません)。
- 全てのスクリプトを作成したか確認してください。コード.gs以外にもOAuth2.gsなども全て必要です。
- Access TokenやAccess Token SecretのパーミッションがRead onlyになっていると表示されません。
「Bad Request Error 400」と表示されてApps Scriptが開けない
ChromeでログインしているGoogleアカウントと、スプレッドシートを作成したアカウントが一致していない可能性があります。
シークレットウィンドウを使うか、Chromeにプロフィールを追加して対応してください。
「Could not authenticate you(code 32)」と実行ログに表示されて投稿できない
Access Tokenが「Read only」の状態だと投稿はできません。
「Read and write」のアクセス権限があるトークンを使用するか、Regenerateしてください。
認証後、「認証成功!」が出ない or 投稿でない
Xへのアクセス許可を行った後でも、トークンが間違っている、またはApps Scriptの保存がされていないと認証に失敗します。すべてのキーやトークンを再確認してください。
投稿されない時間帯があります
スプレッドシートの該当時間帯のセルが空欄、または日付がA列に正しく入力されていないと投稿されません。
どの時間に投稿されるのか、どこで決まりますか?
トリガーの実行時間とスプレッドシートの各列(B〜E列)の組み合わせで決まります。
たとえば、午前6時にトリガーがあれば、B列の内容が投稿されます。
毎日自動投稿できますか?
はい。トリガーを設定すれば毎日自動で投稿されます。必要に応じて曜日や時間帯を変えることも可能です。
投稿内容は何件まで登録できますか?
日付(1〜31)ごとに4件まで投稿可能です(時間帯別にB〜E列)。最大124件/1か月分が可能です。
Twitter APIの利用にお金はかかりますか?
無料(Freeプラン)で利用可能です。ただし、投稿回数に制限があります(500ツイート/月)。
セルのメッセージを変更しなければ同じメッセージが表示されますか?
はい。セルのメッセージを変更しなければ、毎月、同じ日時に同じメッセージが表示されます。
セルが空の場合はどうなりますか?
空の場合はスキップされます(メッセージは投稿されません)。