【Googleスプレッドシート】X旧Twitterに自動投稿!APIキーとApps Scriptの連携

【Googleスプレッドシート】X旧Twitterに自動投稿!APIキーとApps Scriptの連携
🛡️ 超解決

X(旧Twitter)に自動投稿したいと思ったことはありませんか?ビジネスアカウントの運用やニュース配信など、定期的な投稿を手動で行うのは手間がかかります。そこで、GoogleスプレッドシートとApps Scriptを使えば、スプレッドシートに投稿内容を書き込むだけで自動的にXにポストできます。本記事では、X APIキーの取得方法から、Apps Scriptによる自動投稿スクリプトの設定手順までを詳しく解説します。API連携の基礎知識と具体的なコードも紹介しますので、プログラミング初心者の方でも安心して進められます。

【要点】X自動投稿をスプレッドシート+Apps Scriptで実現する3ステップ

  • X APIキーを取得する: Developer Portalでアプリを作成し、Consumer KeysとAccess Tokensを発行します。
  • Apps Scriptでコードを書く: スプレッドシートのデータを読み取り、X API v2のエンドポイントにツイートを送信する関数を作成します。
  • トリガーで定期実行する: タイマーベースのトリガーを設定して、指定した間隔で自動投稿を実行します。

ADVERTISEMENT

自動投稿の仕組みと必要な準備

この自動投稿システムは、Googleスプレッドシートをデータベースとして使い、Apps ScriptがX APIを呼び出してツイートを投稿する仕組みです。スプレッドシートの各行に投稿日時と本文を記入しておけば、スクリプトが未投稿の行をチェックして自動的に投稿します。必要なものは、Xの開発者アカウント、APIキー4種類、そしてスプレッドシートとApps Scriptのみです。X APIの利用にはTwitter Developer Portalでのアプリ登録が必要ですが、無料のBasicプランでも基本的な自動投稿は可能です。Apps Scriptを使うメリットは、Googleサービスとシームレスに連携できること、月間の実行時間に制限はあるものの無料で利用できることです。

X自動投稿を設定する手順

以下の手順に従って、スプレッドシートとApps ScriptでXへの自動投稿を実現します。APIキーの取得からトリガー設定までを順番に進めてください。

1. X APIキーを取得する

  1. Twitter Developer Portalにアクセスする
    https://developer.twitter.com にアクセスし、Xアカウントでログインします。
  2. プロジェクトとアプリを作成する
    Developer Portalのダッシュボードで「Projects & Apps」から「Create Project」を選択し、プロジェクト名を入力します。その後、アプリを作成し、アプリ名を設定します。
  3. APIキーとトークンを生成する
    アプリの「Keys and Tokens」セクションで「API Key」と「API Key Secret」を確認します。次に「Access Token and Secret」を生成し、これら4つのキーを安全な場所に保存します。これらのキーは後でApps Scriptのコードに記述します。

2. スプレッドシートを準備する

  1. 新しいスプレッドシートを作成する
    Googleスプレッドシートを開き、新しいファイルを作成します。
  2. 投稿管理用の列を設定する
    1行目に見出しとして「投稿日時」「本文」「ステータス」と入力します。投稿日時は「YYYY/MM/DD HH:MM」形式、本文は140文字以内(実際にはXの仕様に従い280文字まで可能)で入力します。
  3. テスト投稿用のデータを入力する
    2行目以降に実際に投稿したい日時と本文を入力します。ステータス列は空欄のままにしておきます。後でスクリプトが「完了」と書き込みます。

3. Apps Scriptでコードを記述する

  1. スクリプトエディタを開く
    スプレッドシートのメニューから「拡張機能」→「Apps Script」を選択します。
  2. OAuth1ライブラリを追加する
    スクリプトエディタのメニューから「リソース」→「ライブラリ」を開き、スクリプトID「1CXDCY5sqT9ph64fFw3NvT3W5CJ7H6T5qW8rX2V8」を入力して追加します。バージョンは最新を選択し保存します。
  3. コードを記述する
    以下のコードを「Code.gs」に貼り付け、APIキーをあなたのものに置き換えます。
// OAuth1 for Apps Script ライブラリを使用
var OAuth1 = OAuth1.createService('twitter');

function postToX() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('シート1');
  var lastRow = sheet.getLastRow();
  
  // OAuth1認証情報を設定
  OAuth1.setConsumerKey('YOUR_CONSUMER_KEY');
  OAuth1.setConsumerSecret('YOUR_CONSUMER_SECRET');
  OAuth1.setAccessToken('YOUR_ACCESS_TOKEN', 'YOUR_ACCESS_TOKEN_SECRET');
  
  for (var i = 2; i <= lastRow; i++) {
    var status = sheet.getRange(i, 3).getValue();
    if (status === '') {
      var postDate = sheet.getRange(i, 1).getValue();
      var text = sheet.getRange(i, 2).getValue();
      if (new Date(postDate) <= new Date()) {
        var url = 'https://api.x.com/2/tweets';
        var payload = { 'text': text };
        var response = OAuth1.fetch(url, {
          method: 'POST',
          contentType: 'application/json',
          payload: JSON.stringify(payload)
        });
        if (response.getResponseCode() === 201) {
          sheet.getRange(i, 3).setValue('完了');
        } else {
          sheet.getRange(i, 3).setValue('エラー');
        }
      }
    }
  }
}

4. トリガーを設定して定期実行する

  1. Apps Scriptエディタでトリガーを追加する
    左側のメニューから「トリガー」を選択し、「トリガーを追加」をクリックします。
  2. 実行条件を設定する
    実行する関数として「postToX」を選択し、イベントのソースは「時間主導型」、時間の間隔は「分タイマー」で「5分おき」などを選択します。実際の投稿間隔に合わせて設定します。レート制限を考慮して、少なくとも15分以上の間隔を推奨します。
  3. 承認を行い保存する
    初回の実行時に権限の承認を求められます。必要な権限(スプレッドシートへのアクセス、外部サービスへのアクセスなど)を承認して保存します。

自動投稿時の注意点とよくあるトラブル

APIキーの管理と有効期限

APIキーは他人に知られないように厳重に管理してください。特にConsumer SecretとAccess Token Secretはコード内に直接記述せず、スクリプトのプロパティサービスを使って保存することを推奨します。また、X APIのトークンには有効期限がありませんが、アプリを削除したりキーを再生成すると使えなくなります。普段からバックアップを取っておきましょう。

レート制限(API呼び出し制限)

X APIには一定時間あたりのリクエスト数に制限があります。Basicプランでは1時間あたり50回のPOSTが可能です。短い間隔でトリガーを設定すると制限を超えてエラーになるため、投稿間隔は少なくとも15分以上あけることをおすすめします。レート制限を超えた場合はHTTP 429エラーが返ります。エラーが発生した場合、スクリプトはステータスを「エラー」として記録するため、後で手動で再実行できます。

ツイートの重複投稿を防ぐ

同じ行が何度も投稿されないように、ステータス列をチェックしています。また、投稿日時が現在時刻よりも未来の場合はスキップします。もしトリガーの実行間隔より短い間隔で複数の投稿がある場合は、順次処理されるようにループを回しています。ただし、投稿に失敗した場合はステータスが空のままになるため、再実行時に再度投稿される可能性があります。その対策として、エラーが発生した行は一旦別のシートに退避するなどの処理も検討しましょう。

Apps Scriptの実行時間制限

AppsScriptの1回の実行には最大6分の制限があります。投稿する行数が多い場合、この制限を超える恐れがあります。対策として、一度に処理する行数を制限する、または複数のトリガーに分割する方法があります。例えば、1回の実行で最大10行だけ処理するようにコードを修正し、トリガーを短い間隔で複数回実行する方式が考えられます。

ADVERTISEMENT

まとめ

この記事では、X(旧Twitter)に自動投稿するために、GoogleスプレッドシートとApps Scriptを連携する方法を解説しました。X APIキーの取得から、スプレッドシートの準備、OAuth1ライブラリを使ったスクリプトの記述、トリガーの設定まで一連の流れを確認できました。この仕組みを使えば、手作業でツイートする手間を省き、定時投稿や複数アカウントの運用も効率化できます。次は、投稿内容に画像を添付する機能や、特定のハッシュタグを自動付与するカスタマイズに挑戦してみましょう。スプレッドシートとApps Scriptの組み合わせは、SNS自動投稿以外にも様々な業務自動化に応用可能です。例えば、定期的なリマインダーやデータ集計などにも活用できます。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。