Twitter のツイート(ホーム画面の内容)を定期的にメール受信する方法

最近iPhoneTwitter 専用マシンと化していてちょくちょく見ているのだけど、
TwitterAPI のことを調べていたら、これもしかしたらスマホいらなくて、
プリペイド携帯でメール受信するだけでもいけるんじゃない?ということで試してみた。


手順は3つ。
サーバーを立てなきゃいけないと思っていたので、あまりにお手軽でびっくりした。
Google すごい。



1.
簡単!Google Apps Script とAPIを使った自動メール配信システム作成
http://www.kagua.biz/tool/otenki-tsuchimail.html


を参考に、XML データをメール受信できるようにする。



2.
GAS(Google Apps Script)でお手軽にbotを作る方法。
https://sites.google.com/site/usakoyama/gastotwitterbot


を参考に、Tweet できるようにする。
(「ついったーてすと」が出るところまででOK。)



3.
下記のソースをコピペ。ただし、
「ユーザーのID」のところは、自分のアカウント(@xxxxの、xxxx)にする。
Macの場合)「\」は、バックスラッシュにする。


2012/9/25 追記

iPhoneGmail アカウントでメールを読んだときに文字化けすることがあります。
その場合は、メール下部の「残りのxxKBをダウンロード」を押して、全文を表示させて下さい。
(送信内容を部分的に受信した場合に発生するようです。)
(プレビューは文字化けしたままとなります。)


function tweetInitialize() {
  // 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"));
}


function sendTweetToGmail() {
  //TweetをXML形式で取得しパースする。
  tweetInitialize();
  var options =
  {
    "oAuthServiceName" : "twitter",
    "oAuthUseToken" : "always",
    "method" : "GET"
  };
  var url,result,resultparse,statuses,mailbody;
  url="http://api.twitter.com/1/statuses/home_timeline/ユーザーのID.xml?count=20";
  result=UrlFetchApp.fetch(url, options);
  resultparse=Xml.parse(result.getContentText());

  //ユーザー名とツイートを1つずつ取得し、メール本文にセットする。
  mailbody="";
  statuses = resultparse.statuses.getElements("status");
  for (var i in statuses) {
    var name =statuses[i].user.name.getText();
    var text =statuses[i].text.getText();
    var nl   = "\n"
    mailbody = mailbody + nl + name + nl + text + nl;
  }
  
  //メール送信。最初の1回は認証をする。
  var mailtitle = "Twitter Log: " + new Date();
  var user = Session.getUser();
  var mail = user.getEmail();
  MailApp.sendEmail( mail, mailtitle, mailbody );
}