前回と同じくTwitterの返信も以前(2020年)のスクリプトではできませんので修正します。
API2.0 Versionです。
TwitterにGoogle Apps Script(GAS)を使って返信投稿してみたいと思います。
文章が長いから2つに分けてスレッド(返信)にして投稿するという感じの使い方です。
Step一覧
Google Apps ScriptでTwitterに投稿する方法を4回に分けて掲載しています。
- Twitter API登録方法 (備忘録) ← これはそのまま。
- Twitter APIとGoogle Apps Script 連携でツイート Ver.2024 (備忘録)
- Google Apps ScriptでTwitterにスレッド(返信)投稿 Ver.2024 (備忘録) ← 今ココ
- Google Apps ScriptでTwitterに画像投稿 複数画像も!Ver.2024 (備忘録)
POINT
今回のポイントです。
- 返信は投稿時payloadにin_reply_to_status_idで返信元ツイートを指定
GAS スクリプト
前回作成したpost_tweet関数を改造します。
引数をmsg(投稿する文章), re_id(返信元のツイートID)、
戻り値を今回投稿したツイートIDとします。
今回も引き続きライブラリOAuth2を使用します。
// twitterへ投稿 文字だけ 返信あり OAuth2
function post_tweet(msg, re_id){
var service = getTwitterService2_();
var payload = “”;
if (re_id) {
payload = {
text: msg,
reply: {“in_reply_to_tweet_id”: re_id} // *1
};
} else {
payload = {text: msg};
}
if (service.hasAccess()) {
var response = UrlFetchApp.fetch(twi_endpoint2, {
method: ‘POST’,
‘contentType’: ‘application/json’,
headers: { Authorization: ‘Bearer ‘ + service.getAccessToken() },
muteHttpExceptions: true,
payload: JSON.stringify(payload)
});
var result = JSON.parse(response.getContentText());
var twi_id = result.data.id;
return twi_id;
} else {
Logger.log(“Not Authorized”);
return null;
}
}
function test_tweet(){
// 連続ツイートの見本
var twi_id1 = post_tweet(“GASツイートテスト”);
var twi_id2 = post_tweet(“GASツイート返信テスト”, twi_id1);
}
*1
返信する場合は、statusの他にin_reply_to_status_idが必要になります。
(API1の時は条件分岐しなくても動作しましたが今回はダメです。)
*2
以前(API1)ではid_strを取得する必要がありましたが、
今回はid自体が文字列で入っているのでidを取得すればOKです。
Next Step
次はTwitterへ画像の投稿をします。
Reference
- 公式ドキュメント : POST /2/tweets at X Developer Platform
- Cannot auth my Google Script app at X Developers Forums
余談
日本語のブログ類にAPI2の返信がなかったのがびっくりしました。
みんな、ただのBotを作りたいだけなんだろうな。
Leave a Reply