ひよっこの備忘録

積み重ねて山となる

SlackとGASの連携をして出退勤の時刻をGoogleスプレッドシートに保存する#1

転職しました!!
でもまだ現場が決まらず暇を持て余しているので、社長から依頼されたSlackで出退勤の時刻をGoogleスプレッドシートに打刻するBotを作成していこうと思います!
とは言っても備忘録的なものなので詳しい手順とかは省いて参考資料をペタペタ貼っていくだけ。

SlackとGASの連携

ここを参考にして連携させました。
tech.tabilabo.co.jp

SlackのAPIに関してはここを参照すること。
script.google.com

どうでもいいけど、ライブラリがシンプル過ぎて全然読めなくて震えた。
世のWeb系エンジニアはこういうテキストから使い方を引っ張ってくるのか……と思って尊敬度が上がりました。

因みにSlack APIのpostMessage関数のicon_urlの部分だけど、
画像の直リンクを張るという行為がどうしても受け入れられなくて調べた結果、
icon_emojiというオプションがあることに気付いたので下記に変更しました。

slackApp.postMessage("#" + channel_name, text, {
        username : "出退勤Bot",
        icon_emoji : ":office:"
});

表示名を取得したい

e.parameter.user_nameだと、アカウント作成時とかに設定したアルファベットと記号の名前しか出てこなくて、
Slackクライアント上から設定出来る氏名とか表示名が取得出来ない。
SlackAPIをどう呼び出すんだろうかと調べていたところ、GASlackというSlackAPIをラッパーしたライブラリがあるらしいと聞いて使ってみた。
結果、色々とエラーが出て使えなかったので問い合わせ中……。

結局、SlackAppのusersInfoから出来た。
リファレンス見ると object型が返ってくるとしか書かれていなくて中身がわからない!!
そんな時は、以下を使う。

console.log()

G Suite Developer Hubからスクリプト選択して、右上あたりにある"プロジェクト詳細"横の点が縦に3つ並んでるボタンからStackdriverのログを選択。
ログの中にconsole.logから吐かれたオブジェクトの中身が見れるので、そこを参照したらいけた。

okawa.routecompass.net

TODO

必要な情報はだいたい抜き出せるようになったので、次はGoogleスプレッドシートとの連携やります。