Abstract Archives

Google Apps Script を用いて Twitter をエフェメラル SNS 化する

1. はじめに

 近年,SnapchatInstagram Stories などの一定時間が経過すると自動的に投稿が削除される,エフェメラル SNS と呼ばれるサービスが登場しています。  本記事では,Google Apps Script を用いて Twitter に投稿されてから 7 日以上が経過したツイートを自動的に削除することで,Twitter をエフェメラル SNS 化するシステムの構築について記述します。

2. 環境情報

 次章以降で行う作業は以下の環境下で行ったものです。

3. 事前準備

3.1. Twitter

 Twitter Developers に登録して,以下の情報を取得します。

3.2. Google Apps Script

 Google Apps Script のプロジェクトを作成し,OAuth 認証のライブラリが OSS として Github に公開されているので,手順に従ってインストールします。

4. 実装

 以下のスクリプトを作成した 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 関数が定期的に実行されるようになります。

5. おわりに

 定期的にツイートを削除してくれるサービスとして TweetDelete が存在します。しかし,TweetDelete の削除頻度は高くなく,指定した期間以上のツイートが残ってしまいます。削除頻度が気にならない人は,TweetDelete を利用するのも有効な方法だと思います。

管理者

Dutch
コンピュータサイエンスを専攻している大学院生です。研究の合間に,アニメを観たりブログサイトを運営しながら生きています。

目次