みなさんGoogle Apps Scriptって知っていますか?
そういうものがあることは知っていたんですが、使う機会が全くなかったので僕は触ったことがありませんでした。
仕事で触れる機会があった為、少し学習してみたのですが、かなり万能なスクリプトです。
僕も始めたばかりなので、偉そうなことは言えませんが、
よかったらこれを機にGASを始めてみませんか?
目次
Google Apps Scriptからツイートができる?
Twitter APIを使えば、Google Apps Scriptからツイートをすることができます。

それではご紹介していきますね。
まずはスプレットシートを作成する
Google Apps Scriptのエディタを開く為には、まず新規スプレットシート を作成します。

ツール > スクリプトエディタを開きます。
すると以下の画像のようにエディタが表示されます。

ここまでで開発環境の構築は完了です。
TwitterのAPIキーを取得する
では次にTwitter APIを使用するので、TwitterにアクセスしてAPIキーを取得しにいきます。
Twitter Developerにアクセスする
まずTwitterにログインしている状態で以下のURLにアクセスします。
ログインしてない場合は、右上のSign Inからログインしてください。

https://developer.twitter.com/
次にログインしている状態で右上のApplyをクリックします。

そして左下の「Apply for a developer account」をクリック

Twitter APIの使用用途選択
Twitter APIの使用用途について聞かれるので、使う理由に該当する項目にチェックを入れて[Next]をクリックします。


アカウント情報入力
Twitterアカウント情報が表示されるので、下にスクロールすると
国、名称を入力して[Next]をクリックします。

次にTwitter APIをどのように使用するかを200文字以上で入力します。

さらにスクロールして、
Are you planning to analyze Twitter data?のチェックをオフにします。
今回はデータの分析はしないのでオフで大丈夫です。

次にPlease describe your planned use of these features.
ですが、ツイートするAPIを使用するのでその使用目的を100文字以上で入力します。
そして、Do you plan to display Tweets or aggregate data about Twitter content outside of Twitter?のチェックですが、
オフにしてください。
今回は、外部にツイート内容の表示などはしないのでオフで大丈夫です。

最後のチェックは政府機関で使用するかどうかなのでオフにしてください。

これでNextが活性化されますので押して次に進みます。
ここから先は確認と利用規約のチェックなので、説明は簡略します。

この画面までくると確認メールが登録アドレスに送信されますので、メールを確認してください。
受信したメールを確認する
受信したメールにConfirm your emailボタンがあるのでタップします。

すると上の画面になるのでCreate an appを選択してさらに次の画面でCreate an appを選択します。
Twitter APIの使用アプリについての詳細入力
Twitter APIを使うアプリについての詳細を入力します。
App nameは任意の名称を入力します。
Application descriptionには使用する理由を入力します。
Website URLはTwitter APIを使用するところのURLを入力します。
これは、自分のTwitterアカウントのURLで問題ないです。
Callback URLにURLを入力します。
入力するURLは以下です。
https://script.google.com/macros/d/スクリプトID/usercallback

このスクリプトIDの箇所には、最初に作ったスプレットシートのIDを入力します。これはスクリプトエディタにある
ファイル > プロジェクトのプロパティ から見ることができます。
ここまで入力したら最後の
Tell us how this app will be usedにアプリの使い方について入力して
Createをタップします。

すると利用規約が表示されるので、さらにCreateをタップします。

API key、API secret keyの取得
Key and Tokensタブに移動してAPI Keyと API secret Keyをコピーします。

これでTwitter APIを使用する準備ができました。
それではGASのエディタに戻りましょう。
ライブラリのインストール
・外部サイトをアクセスするためのライブラリであるOAuth1
・簡単にTwitter APIにアクセスできるTwitterWebServiceライブラリ
上記を導入します。
スクリプトエディタ上のリソース > ライブラリを選択すると、ライブラリ情報の一覧が表示されるので、そこの下部のライブラリを追加の欄に以下それぞれプロジェクトキーを入力して追加します。

バージョンはそれぞれの最新バージョンでいいと思います。
デベロッパーモードはどちらでも良いです。
これで準備は完了しました。それではスクリプトを書いていきましょう。
TwitterAPIラッパークラスを作る
GASでクラスを作るのにベストな方法がわからなかったので、以下のようにクラス化しましたが、本当はラッパークラス.クラスメソッドとして呼び出せるようにしたかったのですがインスタンスとして関数を呼びだすような作りになっています。
もうちょっと勉強が必要ですが、今回はこれでいきます。
API_KEYとAPI_SECRETはさきほどコピーしておいたものを貼り付けてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
var TwitterServiceWrapper = function(){ var API_KEY = '************'; var API_SECRET = '************'; /* ツイートリクエストを送信する */ this.request1 = function() { var service = this.getService(); if (service.hasAccess()) { var url = 'https://api.twitter.com/1.1/statuses/update.json'; var payload = { status: text }; var options = { method: 'post', payload: payload, escaping: false }; var response = service.fetch(url, options); var result = JSON.parse(response.getContentText()); Logger.log(JSON.stringify(result, null, 2)); return result; } }; /* サービスの設定 */ this.getService = function(){ return OAuth1.createService('Twitter') .setAccessTokenUrl('https://api.twitter.com/oauth/access_token') .setRequestTokenUrl('https://api.twitter.com/oauth/request_token') .setAuthorizationUrl('https://api.twitter.com/oauth/authorize') .setConsumerKey(API_KEY) .setConsumerSecret(API_SECRET) .setCallbackFunction('authCallback') .setPropertyStore(PropertiesService.getUserProperties()); }; /* 認証リセット */ this.reset = function() { this.getService().reset(); }; /* 認証用URL */ this.getOAuthURL = function() { var log = this.getService().authorize() Logger.log(log); return log }; /* ツイートする */ this.tweet = function(text) { this.request1(text); }; /* コールバック関数 */ function authCallback(request) { var t = new TwitterServiceWrapper(); var service = t.getService(); var authorized = service.handleCallback(request); if (authorized) return HtmlService.createHtmlOutput('認証成功\nこの画面を閉じて、スプレットシートに戻ってください。'); }; |
以上のコードを
1 2 |
function myFunction() { } |
の下に貼り付けてください。
Twitterの認証を通す
それではmyFunctionに実行コードを書いていきます。
まず認証を通しておきます。
1 2 3 4 |
function myFunction() { var twitterServiceWrapper = new TwitterServiceWrapper(); twitterServiceWrapper.getOAuthURL(); } |
これを実行します。
上記をmyFunction()の中身をコピペしたあと[command + s]で保存します。

関数がmyFunctionになっていることを確認してください。
なっていなければ、選択してプルダウンからmyFunctionを選択済みにしてください。
そして[command + R]、もしくは▶︎をクリックして実行してください。
承認アラートが表示された場合
下記のアラートが表示された場合は、承認作業を行います。

許可を確認をクリックして次に進みます。

アカウントを選択します。

すると上記画面になるので詳細をクリック。

さらに無題のプロジェクト(安全ではないページ)に移動をクリックします。

ここで許可を選択すれば、スクリプトを実行することができるようになります。
ログを確認する
スクリプトを実行すると、特に何も起きませんが、これで大丈夫です。
[command + Enter]を押してログを表示させてみてください。
Twitter認証許可を行うためのURLが出力されているのでそれをコピーしてアクセスしてください。

連携アプリを認証をタップするとGASで指定したコールバック関数が呼ばれ認証成功と表示されているはずです。

これで認証は完了しました。
ツイートしてみる
あとは以下のようにツイートするように関数を書き換えて実行すればつぶやけるようになります。
1 2 3 4 |
function myFunction() { var twitterServiceWrapper = new TwitterServiceWrapper(); twitterServiceWrapper.tweet("テスト") } |
どうでしょうか。
設定自体はちょっと手間ですが、これさえできれば、スプレットシートに文章を書いて定期的にツイートすることも可能です。
これを機にみなさんもGAS使って色々試してみてはいかがでしょうか。
それでは最後までお読みいただきありがとうございました。