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をラッパーしたライブラリがあるらしいと聞いて使ってみた。
結果、色々とエラーが出て使えなかったので問い合わせ中……。
@yhay81 こんばんは。
— ゆづる@葵歌劇団 (@yuruyudu) 2019年3月13日
GASlackerを利用したいのですが、QiitaやReadme通りの最小構成でも上手くいきません。
最初はjson parseでコケて、ログを見ると最初からparseされていたので除外。
その次は、postMessageで引数が無効な値だと言われてしまいます。
なにか情報はないでしょうか?
結局、SlackAppのusersInfoから出来た。
リファレンス見ると object型が返ってくるとしか書かれていなくて中身がわからない!!
そんな時は、以下を使う。
console.log()
G Suite Developer Hubからスクリプト選択して、右上あたりにある"プロジェクト詳細"横の点が縦に3つ並んでるボタンからStackdriverのログを選択。
ログの中にconsole.logから吐かれたオブジェクトの中身が見れるので、そこを参照したらいけた。