523 words
3 minutes
Google Apps Script を用いて定期的に Twitter のツイートを削除する
2019-06-05
2020-12-20
1. はじめに
近年,Snapchat や Instagram Stories などの一定時間が経過すると自動的に投稿が削除される,エフェメラル SNS と呼ばれるサービスが登場しています。 本記事では,Google Apps Script を用いて Twitter に投稿されてから 7 日以上が経過したツイートを自動的に削除することで,Twitter をエフェメラル SNS 化するシステムの構築について記述します。
2. 事前準備
2.1. Twitter
Twitter Developers に登録して,以下の情報を取得します。
- CONSUMER_KEY
- CONSUMER_SECRET
- ACCESS_TOKEN
- ACCESS_TOKEN_SECRET
2.2. Google Apps Script
Google Apps Script のプロジェクトを作成し,OAuth 認証のライブラリが OSS として Github に公開されているので,手順に従ってインストールします。
3. 実装
以下のスクリプトを作成した Google Apps Script のプロジェクトに追加します。大括弧の部分は各自の情報に置換してください。
function main() { const CONSUMER_KEY = '[CONSUMER_KEY]' const CONSUMER_SECRET = '[CONSUMER_SECRET]' const ACCESS_TOKEN = '[ACCESS_TOKEN]' const ACCESS_TOKEN_SECRET = '[ACCESS_TOKEN_SECRET]' const CURRENT_TIME = new Date()
// OAuth 認証 const getTwitterService = function () { return OAuth1.createService('Twitter') .setAccessTokenUrl('https://api.twitter.com/oauth/access_token') .setRequestTokenUrl('https://api.twitter.com/oauth/request_token') .setAuthorizationUrl('https://api.twitter.com/oauth/authorize') .setConsumerKey(CONSUMER_KEY) .setConsumerSecret(CONSUMER_SECRET) .setAccessToken(ACCESS_TOKEN, ACCESS_TOKEN_SECRET) }
// タイムラインを取得する // JSON に変換する const response = getTwitterService().fetch('https://api.twitter.com/1.1/statuses/user_timeline.json?count=200') const json = JSON.parse(response)
// 投稿から 7 日以上経過しているツイートをフィルタリングする // ツイートの ID を取得する // ツイートを削除する json .filter(function (x) { const createdTime = new Date(x['created_at']) const diffTimeMillisec = CURRENT_TIME - createdTime return 1000 * 60 * 60 * 24 * 7 < diffTimeMillisec }) .map(function (x) { return x['id_str'] }) .forEach(function (x) { getTwitterService().fetch('https://api.twitter.com/1.1/statuses/destroy/' + x + '.json', { method: 'POST' }) })}
最後に,上記で作成した main 関数をトリガーに登録します。以下のようにトリガーに登録することで main 関数が定期的に実行されるようになります。
4. おわりに
定期的にツイートを削除してくれるサービスとして TweetDelete が存在します。しかし,TweetDelete の削除頻度は高くなく,指定した期間以上のツイートが残ってしまいます。削除頻度が気にならない人は,TweetDelete を利用するのも有効な方法だと思います。