IFTTT無料範囲減対応に関する備忘録。
まだまだいきます。
前回の続きという感じですね。
TwitterにGoogle Apps Script(GAS)を使って返信投稿してみたいと思います。
文章が長いから2つに分けてスレッド(返信)にして投稿するという感じの使い方です。
Step一覧
Google Apps ScriptでTwitterに投稿する方法を4回に分けて掲載しています。
- Twitter API登録方法 (備忘録)
- Twitter APIとGoogle Apps Script 連携でツイート (備忘録)
- Google Apps ScriptでTwitterにスレッド(返信)投稿 (備忘録) ← 今ココ
- Google Apps ScriptでTwitterに画像投稿 複数画像も! (備忘録)
POINT
今回のポイントです。
- 返信は投稿時payloadにin_reply_to_status_idで返信元ツイートを指定
- 投稿の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