読者です 読者をやめる 読者になる 読者になる

技術のメモ帳

気が向いたときに書いてます

[GAS]Google Apps Scriptでツイートを投稿する

Google Apps Script

今回は、Twitter REST APIを用いて、Google Apps Scriptでツイートを投稿するまでの実装を行ってみます。

ツイートを投稿するには、OAuth認証を行う必要があります。OAuth認証については、はてなウェブサービスで利用した、google-apps-oauth1ライブラリを利用すると、簡単に実装できます。

github.com

実装準備

  1. スクリプトエディタを起動し、新規gsファイルを作成します。この際、URLのhttps://script.google.com/macros/d/{PROJECT KEY}/のPROJECT_KEYを控えておきます。
  2. Twitter Developersから、新規アプリケーションを登録します。この際、コールバックURLには、先ほどのPROJECT_KEYを利用し、https://script.google.com/macros/d/{PROJECT KEY}/usercallbackと設定します。
  3. スクリプトエディタに戻り、ライブラリに、MFE2ytR_vQqYfZ9VodecRE0qO0XQ_ydfbを追加します(このライブラリは、apps-script-oauth1ライブラリに則り、Twitterでの認証を簡単に行えるよう作成したものです)。

コードの実装例

以下がコード実装例となります。authorizeとauthCallback関数は必須となります。

実装後、スクリプトエディタからauthorizeを実行します。ログに認証用URLが表示されますので、ブラウザでそちらを実行します。認証が済むと、authCallbackの処理が行われ、タイムラインの取得や、ツイートの投稿が可能になります。

'use strict';

// OAuth1認証用インスタンス
var twitter = TwitterWebService.getInstance(
  '***CONSUMER_KEY***',
  '***CONSUMER_SECRET***'
);

// 認証を行う(必須)
function authorize() {
  twitter.authorize();
}

// 認証をリセット
function reset() {
  twitter.reset();
}

// 認証後のコールバック(必須)
function authCallback(request) {
  return twitter.authCallback(request);
}

// タイムラインを取得
function getUserTimeline() {
  var service  = twitter.getService();
  var response = service.fetch('https://api.twitter.com/1.1/statuses/user_timeline.json');
  Logger.log(JSON.parse(response));
}

// ツイートを投稿
function postUpdateStatus() {
  var service  = twitter.getService();
  var response = service.fetch('https://api.twitter.com/1.1/statuses/update.json', {
    method: 'post',
    payload: { status: '***MESSAGE***' }
  });
  Logger.log(JSON.parse(response));
}

非常に簡単なので、Botなどもサクっと作れそうですね。

最後にライブラリのコードは次のようになりました。

興味があったら利用してみてください。