エンタメ系企業の社内もろもろを担当している、まだまだ引き続き絶賛チックチックチックにはまり中のakibinです。
やってみたこと
たとえばユーザアカウントの有無が記載されているGoogleスプレッドシートがあるとして、「誰がどのアカウントもってるんだ?」って時にSlackのコマンドで取ってこれたらいいなと思い、SlackのSlash Commandsと**Google App Script(GAS)**を使ってそんな環境を作ってみました。
流れを考える
こんな感じを想定。
1.Slackで /*** [useraccount] を実行
2.コマンド指示を受け、GASが実行される
3.GASがスプレッドシートの該当ユーザを検索して、現在持っているアプリのアカウントを取得
4.結果をSlackに返す
作業スタート
【テスト用スプレッドシート作成】
こんな感じで作成
★ = オーナー権限(最強)
◎ = 管理者権限
◯ = 一般ユーザ
【Slack Appからアプリ作成】
1.Skack APPにアクセスして[Create New App]をクリック



【スプレッドシートからGASを作成】
4.スプレッドシートの[ツール]から[スクリプト エディタ]をクリック

Slackのコマンド実行時のパラメーターを受け取るのにこのdoPostを使用します。
###### 6.スプレッドシートから必要な情報を取るスクリプトを書く
こんな感じの流れです。
1.Slackコマンド実行時のパラメータ(該当ユーザのメールアカウント)取得
2.スプレッドシートの該当ユーザの行を取得
3.該当ユーザのアカウント情報のセルを取得
4.セルの内容をSlackに返す
5.該当ユーザがいない場合の内容をSlackに返す
```js
function doPost(e) {
var verificationToken = e.parameter.token;
if (verificationToken != '****************') { // AppのVerification Tokenを入れる
throw new Error('Invalid token');
}
// Slackコマンドのパラメータ(該当ユーザのメールアカウント)取得
var useraccount = e.parameter.text;
// シート取得
var sheet = SpreadsheetApp.getActiveSheet();
// 検索列指定(今回はC列)
var col = 'C';
// 該当ユーザの行を検索
for(var i=1;i<='100';i++){
if(sheet.getRange(col+i).getValue() === useraccount){
// 該当ユーザがある行を取得
var userrow = i;
// 該当ユーザの各サービスのアカウント権限値を取得
var valD = sheet.getRange('D'+userrow).getValue();
var valE = sheet.getRange('E'+userrow).getValue();
var valF = sheet.getRange('F'+userrow).getValue();
var valG = sheet.getRange('G'+userrow).getValue();
// 結果を取得
var kekka1 = useraccount+'が持っているアカウントは↓ '+'(★:オーナー ◎:admin ◯:user)'+' \n'+'Slack'+' : '+valD+' \n'+'GSuite'+' : '+valE+' \n'+'Docbase'+' : '+valF+' \n'+'Jira'+' : '+valG;
// 結果をSlackに返す
var response = {text: kekka1};
return ContentService.createTextOutput(JSON.stringify(response)).setMimeType(ContentService.MimeType.JSON);
}
}
//該当ユーザがいなかった場合の内容をSlackに返す
var kekka2 = useraccount+' なんてユーザおまへん'
var response = {text: kekka2};
return ContentService.createTextOutput(JSON.stringify(response)).setMimeType(ContentService.MimeType.JSON);
}
本当はですね、どの行まで検索するかは、値がどこまで入っているかで指定したかったですが、ちょっと時間がなくて、とりあえず100行までにしてます…。これは近い内更新予定です。
7.このスクリプトをプロジェクト名を入れて一旦保存。次に[公開]から[ウェブ アプリケーションとして導入…]をクリック



【Slack Appに戻りShash Commandsを作成】
10.[Slack App]に戻り[Slash Commands]から[Create New Command]をクリック




これでSlackコマンド実行してみると…
Slackで/animaluser lion
と実行してみると…
結果が返ってきました!
存在しないユーザ/animaluser inu
で実行してみると…
おまへん!
****************************************
◆ Twitterアカウント
@AkibinMusic
◆ Youtubeチャンネル
https://www.youtube.com/channel/UC-JOpwEnJn3gCrUA4NdCYgg