SlackでTwitterを見よう【GAS】
こんにちは、カキレモンです。
以前はGASからSlackにメッセージを送るところまでやったので、今回はTwitterのツイートを取得してSlackに送るのをやってみます。
すでに同じことをやっている方もいますが、ちょっと違う方法(Twitter API v2、Slack側の設定など)でやってみようと思います。
ちなみにコードは最後に載っているので、2000字読むのが嫌な人は目次から飛んでください。
Twitterデベロッパーアカウントの準備
Twitter APIを使用するためには、まずTwitterのデベロッパーアカウントを作成する必要があります。その方法についてはすでに星の数ほど解説サイトがあるので、割愛します。
無事アカウントが取れたら"Create an App"でアプリを作成します。自分はだいぶ前にやったので今どんな感じになっているかわかりませんが、これも検索すれば解説サイトがあるでしょう。
重要なポイントですが、Appを作成したら次の画面に各種キーやトークンなどの文字列が表示されます。これは再確認できないので、必ずどこかに保存しておきましょう。
Twitter APIで検索する
さて、デベロッパーアカウントやAppの準備が済んだら、さっそくTwitterのAPIを使ってみます。
まず、APIを利用するためにBearer tokenが必要です。これはAccess tokenを使った認証で動的に取得することもできますが、App作成時に表示されるのでメモしておけばそのまま使えます(今回API Keysなどは使わない)。あるいはDeveloper Portalのアプリ管理画面から再生成できるはずです。
それではとりあえず、Twitter検索の最小コードを書いてみます。ここでは新しい方のTwitter APIである「v2」を使っています(他のいくつかのサイトでは「v1.1」を使って解説しているので少し仕様が違うことがあります)。
function searchTweet(){
// API(v2)のURL
var url = "https://api.twitter.com/2/tweets/search/recent";
var query = "検索ワード";
var searchFields = "?query=" + query;
var bearer_auth_header = {
"Authorization": "Bearer " + "保存したBearer Token"
};
var options = {
"headers" : bearer_auth_header,
};
var search_response = UrlFetchApp.fetch(url + searchFields, options);
var result = JSON.parse(search_response);
}
通常のTwitter APIでは、過去7日間のツイートを検索できます。また、一度に得られる検索結果は10~100件です(上のように特に指定していない場合は10件になります)。
また以前のバージョンではユーザーデータなども含めツイートのほぼすべての情報が一度に返ってきていたのですが、v2では最低限の情報しか得られません。上では特に何も指定していないので、ツイートに紐付いたIDと本文のテキストのみが返ってきます。
"expansions=author_id"のようにパラメータを設定すればツイート主のユーザーデータなどを一緒に取ってくることができます。取ってきたユーザーデータはツイートデータとは別のincludesプロパティに入っていて、必ずしもツイートと1対1対応ではありません。その辺りは公式リファレンスにチュートリアルっぽいものがあって資料も充実しているので、そちらを見てください。
ユーザー名とアイコンを付けてSlackに送信する
Slackで単純にメッセージを送るのは前回やっているのでその部分の説明は省略し、今回はもう少し設定を増やしてみます。
名前やアイコンを設定するためには、botのchat:write.customizeを有効にする必要があります。Slack APIのページからメッセージを送るためのAppを探して、「OAuth & Permissions」>「Scopes」でBot Token Scopesを追加しましょう。
ツイッターからユーザー名とアイコンのURLを受け取ることができれば後はそれを設定するだけなので、他に気をつけることはないと思います。詳しくは公式のドキュメントを見てください。
できたもの
「モルカー」の検索結果をSlackに送ったものです。ツイート内の画像が表示されないのが残念ですが、それなりににぎやかですね。
コード
GAS上でmain関数を実行することでTwitter検索→Slackに送信が行われます。
また、ScriptPropertyは別に設定する必要があります。
ScriptPropertyの設定。GAS上で一度だけ実行しておけば大丈夫です。
おわりに
長くなりましたね。大したことはしてないんですが、文章化すると冗長になるきらいがあります。
定期的に実行して新規ツイートのみ流すとかSlackの表示をもっとTwitterに寄せるとかまだまだできることはありそうですが、次何やるかは未定です。
でもTwitter APIは他にもできることが多そうなのでぜんぜん違うこともしてみたいです。
それでは、(願わくば、)また。
この記事が気に入ったらサポートをしてみませんか?