園児ニアのメモ

ただのエンジニア。何でも屋みたいな扱い受けてます。

【GAS】Twitter連携ライブラリ、ELETwitterを公開

目次

はじめに

GoogleAppScript(以下GAS)でTwitterと連携してツイートしたりフォローしたりというTwitterAPIの機能を実装したライブラリを作成したので公開します。
要望やバグ、不明点があればコメントにてよろしくお願いします。

ELETwitterの導入方法

2017/09/06のバージョンでは自分が普段使っている機能しか対応していませんが、今後全てに対応する予定です。

ライブラリの追加に必要なプロジェクトキー

1GLFAeiqOZHQ_xCI4HaigE5R18A0vKwXQE_PoJefcEPGkVUMG4OAoUegg

ELETwitterを使用するまでの設定

どこのスクリプトでもいいのでメソッド外に以下を記入してください。

ELETwitter.TWITTER_CONSUMER_KEY = 'CONSUMER_KEY';
ELETwitter.TWITTER_CONSUMER_SECRET = 'CONSUMER_SECRET';
ELETwitter.OAUTH_USER_KEY = 'ここはなんでもいいです';

ライブラリのメソッドを呼び出す前に指定すればOKですが、メソッドの外で呼び出す方がオススメです。
アカウントを使い分けたい場合は「OAUTH_USER_KEY」を、TwitterAPIを使い分けたい場合は「TWITTER_CONSUMER_KEY」「TWITTER_CONSUMER_SECRET」をメソッドの中などで書き換えてください。(一応複数アカウント対応)

「OAUTH_USER_KEY = 'ここはなんでもいいです';」の「ここはなんでもいいです」の部分は任意の文字を入れてください。
この文字をkeyとしてTwitterアカウントの連携情報を保存,取得します。

ELETwitterがありません!みたいなことを言われた場合は正しくライブラリを追加してバージョンが選択されていない可能性があります。
もしくは以下の識別子を変えた可能性があります。

また、「CONSUMER_KEY」「CONSUMER_SECRET」がわからない人は以下の記事を参考にどうぞ(記事内のKeyとSecretです)
madgenius.hateblo.jp

設定は以上です。

機能一覧

今後追加更新あると思いますが解説します。(最終更新:2017/09/06)

また、「TwitterLogin」と「TwitterReset」以外の全てのメソッドでTwitterAPIからの返り値を受け取れます。
失敗やエラー内容の確認などもそこで取得できます。

初回実行時、GASによるGoogleアカウントの認証と「Please login to Twitter:」というエラーが出ます。
エラーの指示にしたがってTwitter連携が必要です。

ログイン - TwitterLogin

function myFunction() {
    ELETwitter.TwitterLogin();
}

Twitter連携だけをするテスト用のメソッドです。

連携解除 - TwitterReset

function myFunction() {
    ELETwitter.TwitterReset();
}

連携情報保存 - TwitterAuthCallback

基本的には使わないメソッドですが、ライブラリがTwitter連携した時のコールバック先になっています。

複数ユーザーの詳細を取得 - TwitterUsersLookup

function myFunction() {
    var result = ELETwitter.TwitterUsersLookup(null, ['12345678','90123456']);
}

複数ユーザーのアカウント情報の詳細を取得します。

ミュート登録 - TwitterMutesCreate

function myFunction() {
    var result = ELETwitter.TwitterMutesCreate(null, '12345678');
}

ログインしているアカウントで特定のユーザーをミュートします。

フォロー - TwitterFollow

function myFunction() {
    var result = ELETwitter.TwitterFollow(null, '12345678');
}

ログインしているアカウントで特定のユーザーをフォローします。

リムーブ - TwitterUnfollow

function myFunction() {
    var result = ELETwitter.TwitterUnfollow(null, '12345678');
}

ログインしているアカウントで特定のユーザーをリムーブ(フォローを解除)します。

ツイート - TwitterSend

function myFunction() {
    var result = ELETwitter.TwitterSend('テスト');
}

ログインしているアカウントで特定の内容をツイート(投稿)します。

DM送信 - TwitterSendDM

function myFunction() {
    var result = ELETwitter.TwitterSendDM(null, '12345678', 'テスト');
}

ログインしているアカウントから特定のアカウントへ指定した内容のDMを送る。

フォロー覧取得 - TwitterFollowList

function myFunction() {
    var result = ELETwitter.TwitterFollowList('5000',null, '12345678', -1);
}

ログインしているアカウントから特定のアカウントのフォロー一覧を取得します。

フォロワー覧取得 - TwitterFollowerList

function myFunction() {
    var result = ELETwitter.TwitterFollowerList('5000',null, '12345678', -1);
}

ログインしているアカウントから特定のアカウントのフォロワー一覧を取得します。

ツイート検索 - TwitterSearch

function myFunction() {
    var result = ELETwitter.TwitterSearch('200', '園児エル');
}

ログインしているアカウントでツイートを検索します。

エラー処理

エラー処理は各メソッドを読んだ時に戻り値として返ってきます。

エラーの受け取り方

以下のような感じでエラーが受け取れます。

function myFunction() {
    var result = ELETwitter.TwitterLogin();
    if (result == null) {
        //TwitterLoginやTwitterResetの場合は返り値がありませんが、
        //TwitterSearchなど返り値があるものの場合はエラーです。
    } else {
        //返り値あり
        if (result.errors == null) {
            //エラーあり
            var error = result.errors[0];
            if (error != null) {
                //error.message ← エラー内容
                //error.code ← エラーコード
            }
        } else {
            //エラーなし
        }
    }
}

「error.code」が0の場合は主にライブラリ内でエラーが発生した時の通知です。
その他、TwitterAPIのエラーやGASのエラーもtry{}cache{}で取得すれば同じ形式で入ります。

エラー内容をログとして残したり、OAuth認証がないChatworkに送ったり、メールで送信することをオススメします。

主なエラー内容

Please login to Twitter:

Twitterにログインしていない、または前回の通信で無効なトークンと言われログアウトした場合に出ます。
「Please login to Twitter: https://twitter.com...etc」のようなメッセージになってます。
このURLをブラウザで開くとよく見るTwitterの連携を許可しますか?みたいなページに飛びます。
連携後「認証が完了しました。このタブは閉じても問題ありません。」と表示されれば連携完了です。

Consumer Key is required.

TwitterAPIのConsumerKeyが設定されていない時に発生するエラーです。
ELETwitterを使用するまでの設定で設定方法がありますので再度確認してください。

Invalid argument:

メソッドを呼び出す時の引数が不正な場合に発生するエラーです。
指定が必須の引数がnullの場合が多いのでご確認ください。
「Invalid argument: Invalid argument: message is null」と返ってきた場合はmessageがnullまたは空文字("")のため不正です。

Longer than 140 characters.

ツイートの140文字の制限を超えた時のエラーです。

その他

その他TwitterやGASのエラーが返ってきます。
Twitter:Error Codes & Responses

Q&A

  • Q.ログイン処理でログ出力されたURLにアクセスし、連携を許可したら「Error handling callback: token mismatch」というエラーが出ました。どうすればいいですか?
    • A.TwitterResetで連携解除してから再度連携してみてください。