Noël Café : Blog

Noëlの公開備忘録とひとりごと。コメント・トラックバックご自由に

Google Apps ScriptでTwitterにスレッド(返信)投稿 (備忘録)

IFTTT無料範囲減対応に関する備忘録。
まだまだいきます。

前々回の続きという感じですね。
TwitterにGoogle Apps Script(GAS)を使って返信投稿してみたいと思います。
文章が長いから2つに分けてスレッド(返信)にして投稿するという感じの使い方です。


POINT

  1. 返信は投稿時payloadにin_reply_to_status_idで返信元ツイートを指定
  2. 投稿のIDを受け取るときはidでなくid_strを使用

 

GAS スクリプト

前々回作成したpost_tweet関数を改造します。
引数をmsg(投稿する文章), re_id(返信元のツイートID)、
戻り値を今回投稿したツイートIDとします。
今回も引き続きライブラリTwitterWebServiceを使用します。

// twitterへ投稿
function post_tweet(msg, re_id){
  var service  = twitter.getService(); //TwitterWebServiceのインスタンス
  var response = service.fetch("https://api.twitter.com/1.1/statuses/update.json", {
    method: "post",
    payload: {
      status: msg,
      in_reply_to_status_id : re_id // *1
    }
  });
  tw_id = JSON.parse(response).id_str;  // *2
  return tw_id;
}

function myFunction{
  // 連続ツイートの見本
  var tw_id1 = fn_post_tweet("ツイート1");
  var tw_id2 = fn_post_tweet("ツイート2", tw_id1);
}

*1
返信する場合は、statusの他にin_reply_to_status_idが必要になります。
re_idが空や0の場合は返信でなく普通のツイートが投稿される(模様)。
(条件分岐せずに動作しました。とりあえず。)

*2
今回ツイートしたID(tw_id)は投稿時に受け取った情報(response)を
JSON.parseすれば出てきます。
ここで注意するのは「id」ではダメです。
「id_str」を使います。
理由は現在のツイートIDが大きくなりすぎてGAS(というかJavaScript)では扱えないからです。
文字列としてIDが入っているid_strを使用します。

Reference

余談

*2の部分、気づくのに時間がかかり、
「手入力(?)では返信できるのに、関数の返り値を使って返信するとできない!」
という事態が発生しました。
JavaScriptは約16桁になると数値が丸められてしまうのね。
というか、全世界でそんなにツイッターでつぶやかれているのね。

Leave a Reply

*


CAPTCHA



Trackback URL