Twitterに自動投稿するbotをGoogle App Scriptで自作する #6 (TwitterのTLを取得する)

 前回までで自動でTwitterに投稿するbotを作りましたが、もう少しロボットらしく、TLの情報を見てTweetができるように改造していきたいと思います。

 まずは今回はTLの取得からです。

https://api.twitter.com/1.1/statuses/home_timeline.json?hogehoge...

と言う形でTLを取得することができますが、まずはhogehogeの部分は無くても取得できるので、一番シンプルな形で取得してみましょう。

  

function getTL(){ 
  //Twitterサービスの初期化
    var service  = twitter.getService();
    
    ////ツイートの検索////
    var url = "https://api.twitter.com/1.1/statuses/home_timeline.json";
    var json = service.fetch(url);
    var array = JSON.parse(json);
    
    console.log(array[0].text) 
}

"Bad Authentication data."と言うエラーが出た場合、Twitterの認証が上手くいっていない可能性があります。このブログの#1の記事を確認してみてください。

ソースの説明をしていきます。

3行目はTwitterのサービスと連携します。

6行目はTwitterにリクエストするurlを指定しています。この場合は、TLを特に指定することなく取得するurlです。

7行目で指定したurlにアクセスして得られた情報をjsonに読み込みます。

8行目でparseしてarrayに読み込みます。

10行目でconsoleに表示します。今回はarrayの一番最初"0"個目に格納されている"text"情報を出力します。

取得したタイミングの最新の投稿が表示されるはずですが、読み込む対象のtweetが長文だった場合、全文が取得できない可能性があります。

これは、Twitter APIの標準仕様で"text"は、115文字を超えるtweet本文は省略されることになっているからです。これだと上手く使えないので、基本的にtweetを取得する際は、urlの最後に?をつけて、tweet_modeをextendedにしてください。この時、"text"は取得されず、 "full_text"を取得する必要があります。

////ツイートの検索////
  //最大数200, リプライ除く, 前回リツイート以降のツイートを取得
  var url = "https://api.twitter.com/1.1/statuses/home_timeline.json?tweet_mode=extended";
  var json = service.fetch(url);
  var array = JSON.parse(json);
  
  console.log(array[0].full_text); 

よって、上記のような書き方にして下さい。

それ以外に私の場合は下記のような追記をしています。

count=200⇒tweetの取得数を最大の200にする。

exclude_replies=true⇒返信は邪魔なので削除する。

since_id=" + lastID⇒直前の取得の際にIDを保存しておいて、それ以降のTweetだけを取得する。

コメント