Slackから任意のGoogle Drive内をファイル名検索します
このアプリは3つの機能から構成されています.
機能 | 詳細 |
---|---|
Action | Slackからコマンド入力を受けつけてメッセージを返す |
Interactivity | ユーザーの反応に対して検索結果を返す |
Database | ドライブのIDを保管する |
まずSlack Appを追加するための設定をしましょう.
といっても,必要な設定はoAuthでwrite系列のものを承認すればいいだけです.
アプリ名とか画像は後でも大丈夫です.
次にこの何もできないアプリに機能を追加していきましょう.
Action機能はコマンド入力から検索語を取得し,メッセージを返す機能です.
GASとSlackのCommand機能から成り立っています.
コードはこちら
Slackのトークンなどのパラメータは各自入力してください.
こちらのコードをデプロイしたら,デプロイ結果のURLをSlack AppのCommand機能にぶちこんでください.
Interactivity機能はユーザーが選択した結果に対して,検索結果を返す機能です.
GASとSlackのInteractivity機能から成り立っています.
コードはこちら
ドライブIDなどのパラメータは各自入力してください.
こちらのコードをデプロイしたら,デプロイ結果のURLをSlack AppのInteractivity機能にぶちこんでください.
Database機能は検索したい親ドライブのフォルダ情報を保持する機能です.
GSSとGASから成り立っています.
コードはこちら
GSSの見本はこちら
最後に各種機能を追加したアプリをインストールしましょう.
- [ ]oAuthが設定されていること
- [ ]各種GASのパラメータを調整したこと
- [ ]データベースのGSSにドライブ情報が入っていること
- [ ]Command機能が設定されていること
- [ ]Interactivity機能が設定されていること
- [ ]インストール先が正しいこと
Slack Responseは3秒以内に返らないとSlackが無視してしまう...
つまりどういうことかというと,GASで外部APIを呼び出しすぎると検索処理が間に合わないのです.
親フォルダ以下のサブフォルダを全探索する処理が3秒で間に合うはずがありません.
そこで本来なら必要のないDatabase機能を追加しました.すると圧倒的速度で検索できるようになりました.
APIがボトルネックになる,という学び