Twitter のツイート(ホーム画面の内容)を定期的にメール受信する方法
最近iPhone がTwitter 専用マシンと化していてちょくちょく見ているのだけど、
Twitter の API のことを調べていたら、これもしかしたらスマホいらなくて、
プリペイド携帯でメール受信するだけでもいけるんじゃない?ということで試してみた。
手順は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 追記
iPhone のGmail アカウントでメールを読んだときに文字化けすることがあります。
その場合は、メール下部の「残りの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 ); }