Fork me on GitHub

Gas Twitterへの自動投稿

  • Mar 24, 2011

categoryプラグインは存在しません。

概要

Google Apps Scriptで、Twitterに自動投稿する方法のメモ。簡単なbotはかなりこれで作れそうな感じです。ほとんどチュートリアルのまんまですが。

環境

  • Google Docs Spreadsheet (2011.3時点)

手順

Twitter Developersでアプリを登録

にアクセスして、新規アプリを登録しておきます。この際に、以下の点を注意します。

登録したら、Consumer KeyとConsumer Secretをメモしておきます。

Spreadsheetを用意

何でも良いので、Google Docs上にSpreadsheetを用意しておきます。

OAuth認証

  • [Tools]-[Scripts]-[Script Editor]からスクリプトエディタを起動します。
  • まずは以下のような認証用の関数を入力して、保存します。
function test_oauth() \{
 // Setup OAuthServiceConfig
 var oAuthConfig = UrlFetchApp.addOAuthService("twitter");
 oAuthConfig.setAccessTokenUrl("http://api.twitter.com/oauth/access_token");
 oAuthConfig.setRequestTokenUrl("http://api.twitter.com/oauth/request_token");
 oAuthConfig.setAuthorizationUrl("http://api.twitter.com/oauth/authorize");
 oAuthConfig.setConsumerKey(ScriptProperties.getProperty("twitterConsumerKey"));
 oAuthConfig.setConsumerSecret(ScriptProperties.getProperty("twitterConsumerSecret"));

 // Setup optional parameters to point request at OAuthConfigService.  The "twitter"
 // value matches the argument to "addOAuthService" above.
 var options =
   \{
     "oAuthServiceName" : "twitter",
     "oAuthUseToken" : "always",
     "method" : "GET"
   \};
 var result = UrlFetchApp.fetch("http://api.twitter.com/1/account/verify_credentials.json", options);
\}
  • [File]-[Properties]を開いて、Script propertiesにtwitterConsumerKeyとして、前述のComsumer Keyを、twitterConsumerSecretとして、前述のConsumer Secretを追加します。
  • [Share]-[Publish as Service]を選んで、Enable ServiceのチェックをオンにしてSaveボタンを押します。
  • [Run]メニューから、test_oauthを選んで、上記スクリプトを実行します。
  • Authorizeボタンを押すと、通常のOAuthアプリ同様認証画面が出るのでAllowを選択します。

Twitter投稿関数を用意

あとは、JavaScriptの関数でTwitterへの投稿を記述します。以下は投稿のための関数の例。

function post_status(status) \{
 // Setup OAuthServiceConfig
 var oAuthConfig = UrlFetchApp.addOAuthService("twitter");
 oAuthConfig.setAccessTokenUrl("http://api.twitter.com/oauth/access_token");
 oAuthConfig.setRequestTokenUrl("http://api.twitter.com/oauth/request_token");
 oAuthConfig.setAuthorizationUrl("http://api.twitter.com/oauth/authorize");
 oAuthConfig.setConsumerKey(ScriptProperties.getProperty("twitterConsumerKey"));
 oAuthConfig.setConsumerSecret(ScriptProperties.getProperty("twitterConsumerSecret"));

 // Setup optional parameters to point request at OAuthConfigService.  The "twitter"
 // value matches the argument to "addOAuthService" above.
 var options =
   \{
     "oAuthServiceName" : "twitter",
     "oAuthUseToken" : "always",
     "method" : "POST"
   \};
 var result = UrlFetchApp.fetch("http://api.twitter.com/1/statuses/update.json?status=" + encodeURIComponent(status), options);
\}

ポイントは以下の点。

  • POSTを明示的に指定する。
  • ステータスはURLエンコードした文字列を利用して、Query stringとして埋め込む。

あとは、トリガーなどを設定して一定時間毎にTwitterへの投稿を行うようにします。

参考

commentプラグインは存在しません。