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

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

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

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

Step一覧

Google Apps ScriptでTwitterに投稿する方法を4回に分けて掲載しています。

  1. Twitter API登録方法 (備忘録)
  2. Twitter APIとGoogle Apps Script 連携でツイート (備忘録)
  3. Google Apps ScriptでTwitterにスレッド(返信)投稿 (備忘録) ← 今ココ
  4. Google Apps ScriptでTwitterに画像投稿 複数画像も! (備忘録)

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 = post_tweet(“ツイート1”);
  var tw_id2 = 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を使用します。

Next Step

次はTwitterへ画像の投稿をします。

Reference

余談

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

Leave a Reply

*


CAPTCHA



Trackback URL