GAS

【GAS】Twitterキーワード検索&ツイート取得方法完全解説

thumbnail
n-mukineer

GASを使ってツイートを取得する方法が知りたいな…
キーワードやハッシュタグで指定して取得できたらいいな…

Google Apps Script(通称GAS:ガス)を使ってTwitterの操作を行いたい方向けの記事です。

本記事ではGASとTwitter APIを使って、ツイートを取得する方法を解説します。

この記事を読むことで以下のことができるようになります。

  • 任意のキーワードで最新ツイートを検索することができる
  • 検索した結果をログに出力することができる

GASを全く使ったことがない方でも、コピペで簡単に動かすことができるようになりますので、ぜひ読んでみてください。

この記事を書いた人

高専から九州大学に編入後、精密機器メーカーで開発経験を積み、ハードウェアスタートアップでIoTデバイス向けのWebアプリケーション開発を行っている。

GASを使った記事多数執筆中。
» GAS関連記事一覧

すでにTwitter APIとGASの準備が整っていて、「手っ取り早くコピペして使いたい!」という場合は、以下のボタンをクリックしてジャンプできます。

Twitter APIとGASの準備がまだだよーという場合は、順番に読み進めていけばすべて準備が整いますので、そのままお進みください。

Twitter APIとGASの準備

Twitter APIとGASの準備

GASとTwitter APIの準備方法について解説します。

GASでTwitter APIを使えるようにするには、以下の3点が必要です。

  1. Twitter APIアカウントの設定を行う
  2. GASプロジェクトを作成する
  3. GASでTwitter認証を行う

具体的な設定方法は少し長くなりましたので、以下の記事にまとめました。
»【簡単】GASでTwitter APIを使えるようにする方法【3つの手順】

以下にTwitterでキーワード検索するGASコードを記載しています。

【GASコード】Twitterでキーワード検索

2022カタールワールドカップで話題となったハッシュタグ「#影山寝ろ」で検索してログに表示するスクリプトです。

11行目の「#影山寝ろ」の部分を変更すると、自分の好きなワードで検索することができます。

また、max_results=20の部分の20を変更することで、一度に取得するツイートの件数を変更することができます(最大100

なお、コードを実行する前に以下の状態となっているかを確認してください。
(※なっていない場合はGASでTwitter認証を行う手順を参照)

  • GASのスクリプトプロパティに「API Key」と「API Key Secret」登録済であること(登録方法)
  • authorize()関数が実行されTwitter認証が完了していること

GASコード

const TWITTER_API_KEY = PropertiesService.getScriptProperties().getProperty('TWITTER_API_KEY');
const TWITTER_API_SECRET = PropertiesService.getScriptProperties().getProperty('TWITTER_API_SECRET');
const twitter = TwitterWebService.getInstance(TWITTER_API_KEY, TWITTER_API_SECRET);
const API2_BASE_URL = "https://api.twitter.com/2";
const URL_GET_SEARCH = "/tweets/search/recent?query=";

// 実行するのはこの関数
function main() {
  const keyword = "#影山寝ろ";
  //1回目はnextTokenなしで呼び出す
  const nextToken = getTweets(keyword).nextToken;
  //APIリミットに引っかからないように10秒待つ
  Utilities.sleep(10*1000);
  //2回目は1回目のnextTokenを指定したうえで呼び出す
  getTweets(keyword, nextToken);
}

// キーワードからツイートを取得する関数
function getTweets(rawKeyword, nextToken) {
  //検索キーワード(URI Encodeが必要)
  //-is:retweetでリツイートを除外
  //-has:mentionsでメンションを含むツイートを除外
  const keyword = encodeURIComponent(`${rawKeyword} -is:retweet -has:mentions lang:ja `)
  //検索オプション(max_resultsで取得件数を指定可能)
  let option = "&tweet.fields=author_id,id,text,created_at&max_results=20";
  //nextTokenを指定した場合は追加
  if(nextToken) {
    option += `&next_token=${nextToken}`;
  }
  //GET対象のURLを作成
  const url = API2_BASE_URL + URL_GET_SEARCH + keyword + option;

  //リクエスト実行
  const service = twitter.getService();
  const response = JSON.parse(service.fetch(url));
  const tweets = response.data;
  console.log(`${tweets.length}件の「${rawKeyword}」に関するツイートを取得しました`);
  tweets.forEach(tweet => {
    console.log(`${tweet.id}: ${tweet.text}`);
  })
  // 取得したツイートとnext_tokenをObjectにして返す
  return {
    tweets: tweets,
    nextToken: response.meta.next_token
  };
}

// 認証
function authorize() {
  twitter.authorize();
}
 
// 認証解除
function reset() {
  twitter.reset();
}

// 認証後のコールバック
function authCallback(request) {
  return twitter.authCallback(request);
}

実行結果

「#影山寝ろ」で検索した結果

1カ月で取得できるツイート数の上限は50万件

Twitter APIにおいて、1カ月間で取得できるツイートの数には上限が決まっています。

1カ月あたり、50万ツイートまで(Esseintialの場合)

Twitter API登録初期段階では「Esseintial」という状態になっています。

Essentialの状態では、ツイートを取得できる数は1カ月あたり50万件までです。

これを超えると取得ができなくなり、リセットされるまで待つ必要があります。

ツイートの消費状況は、Twitter APIのDashboard画面にて確認が可能ですので、状況を見ながらGASを実行していくのがおすすめです。

えぬの心の声
えぬの心の声

50万件を超えちゃってますね…

Twitter APIをより使いこなしたい場合、「Elevated」という上級者向けのアクセス権限に申請が可能です。

Elevatedに承認された場合は、1カ月あたり200万件までに無料でアップグレードされますので、大量にツイートを取得したい場合は検討してみてはいかがでしょうか?

まとめ

任意のキーワードでツイートを検索するGASスクリプトを書く手順を解説しました。

定期的に実行してLine Notifyに通知するようにすれば、Twitterを開かなくても特定のワードに関しての情報を得ることができるようになりますね!

GASからLine Notifyを使ってスマホに通知を送る方法については以下の記事に記載しています。参考にしていただければ幸いです。

あわせて読みたい
GASからLINE Notifyを使ってLINE通知する方法
GASからLINE Notifyを使ってLINE通知する方法

ツイートの取得方法については、以下の記事を参考にさせていただきました。非常にわかりやすかったです。ありがとうございました。

参考記事
Google Apps ScriptからTwitter API v2を使ってツイートする【GAS】
Google Apps ScriptからTwitter API v2を使ってツイートする【GAS】
このブログを書いている人
えぬ
えぬ
N日後にムキムキになるエンジニア
WebアプリエンジニアとしてIoTシステムを開発中。30代折り返し。 趣味(モノづくり、プログラミング、筋トレ)や子育てのことを主に記事にします。 TOEIC: 900点/第一級陸上無線技術士/第3種電気主任技術者/技術士一次試験合格/基本情報技術者/第2種電気工事士/デジタル技術検定2級(情報・制御)
記事URLをコピーしました