【GAS】Twitterキーワード検索&ツイート取得方法完全解説
GASを使ってツイートを取得する方法が知りたいな…
キーワードやハッシュタグで指定して取得できたらいいな…
Google Apps Script(通称GAS:ガス)を使ってTwitterの操作を行いたい方向けの記事です。
本記事ではGASとTwitter APIを使って、ツイートを取得する方法を解説します。
この記事を読むことで以下のことができるようになります。
- 任意のキーワードで最新ツイートを検索することができる
- 検索した結果をログに出力することができる
GASを全く使ったことがない方でも、コピペで簡単に動かすことができるようになりますので、ぜひ読んでみてください。
高専から九州大学に編入後、精密機器メーカーで開発経験を積み、ハードウェアスタートアップでIoTデバイス向けのWebアプリケーション開発を行っている。
GASを使った記事多数執筆中。
» GAS関連記事一覧
すでにTwitter APIとGASの準備が整っていて、「手っ取り早くコピペして使いたい!」という場合は、以下のボタンをクリックしてジャンプできます。
Twitter APIとGASの準備がまだだよーという場合は、順番に読み進めていけばすべて準備が整いますので、そのままお進みください。
Twitter APIとGASの準備
GASとTwitter APIの準備方法について解説します。
GASでTwitter APIを使えるようにするには、以下の3点が必要です。
- Twitter APIアカウントの設定を行う
- GASプロジェクトを作成する
- GASでTwitter認証を行う
具体的な設定方法は少し長くなりましたので、以下の記事にまとめました。
»【簡単】GASでTwitter APIを使えるようにする方法【3つの手順】
以下にTwitterでキーワード検索するGASコードを記載しています。
【GASコード】Twitterでキーワード検索
2022カタールワールドカップで話題となったハッシュタグ「#影山寝ろ」で検索してログに表示するスクリプトです。
11行目の「#影山寝ろ」の部分を変更すると、自分の好きなワードで検索することができます。
また、max_results=20
の部分の20
を変更することで、一度に取得するツイートの件数を変更することができます(最大100
)
なお、コードを実行する前に以下の状態となっているかを確認してください。
(※なっていない場合はGASで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カ月間で取得できるツイートの数には上限が決まっています。
Twitter API登録初期段階では「Esseintial」という状態になっています。
Essentialの状態では、ツイートを取得できる数は1カ月あたり50万件までです。
これを超えると取得ができなくなり、リセットされるまで待つ必要があります。
ツイートの消費状況は、Twitter APIのDashboard画面にて確認が可能ですので、状況を見ながらGASを実行していくのがおすすめです。
50万件を超えちゃってますね…
Twitter APIをより使いこなしたい場合、「Elevated」という上級者向けのアクセス権限に申請が可能です。
Elevatedに承認された場合は、1カ月あたり200万件までに無料でアップグレードされますので、大量にツイートを取得したい場合は検討してみてはいかがでしょうか?
まとめ
任意のキーワードでツイートを検索するGASスクリプトを書く手順を解説しました。
定期的に実行してLine Notifyに通知するようにすれば、Twitterを開かなくても特定のワードに関しての情報を得ることができるようになりますね!
GASからLine Notifyを使ってスマホに通知を送る方法については以下の記事に記載しています。参考にしていただければ幸いです。
ツイートの取得方法については、以下の記事を参考にさせていただきました。非常にわかりやすかったです。ありがとうございました。