12
13

More than 5 years have passed since last update.

[GAS] Google Apps Script でTwitter複数アカウントを使い分ける

Last updated at Posted at 2016-11-17

概要

こちらの記事([GAS]Google Apps Scriptでツイートを投稿する)で公開されている
Twitterライブラリを使う時、複数アカウントを使い分ける方法について情報共有します。
このライブラリはたいへん便利なのですが、別のスクリプトやプロジェクトを作成しても使用されるアカウントが共通で一つになってしまうという弱点があります。
ちょっと書き加えるだけで、複数のアカウントを使い分けることができるようになります。

実装

※上記の記事を参考にしてGASにライブラリを組み込んである前提です。
TwitterWebService: MFE2ytR_vQqYfZ9VodecRE0qO0XQ_ydfb
OAuth1: 1CXDCY5sqT9ph64fFwSzVtXnbjpSfWdRymafDrtIZ7Z_hwysTY7IIhi7s

コード.gs
'use strict';

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

//OAuth1ライブラリを導入したうえで、getServiceを上書き
twitter.getService = function() {
  return OAuth1.createService('Twitter2')
    .setAccessTokenUrl('https://api.twitter.com/oauth/access_token')
    .setRequestTokenUrl('https://api.twitter.com/oauth/request_token')
    .setAuthorizationUrl('https://api.twitter.com/oauth/authorize')
    .setConsumerKey(twitter.consumer_key)
    .setConsumerSecret(twitter.consumer_secret)
    .setCallbackFunction('authCallback')
    .setPropertyStore(PropertiesService.getUserProperties())
}



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

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

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

function tweetTest(){
 postUpdateStatus('test'); 
}


重要なのはこの部分です。
return OAuth1.createService('Twitter2')
OAuthライブラリを読むと、ここで引数として与えるサービス名ごとに認証情報を保管するようになっています。この保管は、Googleアカウント単位で行われるため、スクリプトやプロジェクトを変えてもアカウント認証情報が共通になってしまうのです。
TwitterWebService.gsの中でこの引数が'Twitter'として固定文言で与えられているため、その部分だけを上書きしてサービスを初期化すれば、複数のアカウントを利用できるようになります。
なお、実際に使う際にはTwitter_taroTwitter_jiroのように、アカウント名をサービス名に含めてしまうと、管理しやすいのではないかと思います。

12
13
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
13