[GAS×slack]slackでBotがスプシに書いてあることを通知してくれるやつを作る

今回やりたいこと

slackにGoogleスプレッドシートの名言集からメッセージの投稿をしたい。
ゆくゆくは改良していい感じ(?)にしたい。

これまで参考にしていた記事↓はチャットワークだったので、チャットワークじゃなくてslackでやりたいよ、ということです。


slackの準備

・テスト用slackワークスペース作る。すぐできるので詳細割愛。
・slackの投稿用チャンネルを用意。すぐできるので詳細割愛。
・WebHook追加。すぐできるので詳細割愛。下記の前回のnoteの最後のほうにスクショ付で手順を書いた。


slackの準備ができたら、スプシの名言集はすでにあるものとして、GASを書いていく。

spreadシートからデータ取得して1日1回指定時刻にslackにメッセージを投稿する、という内容でスクリプト書きたい。

GASからslackにメッセージを投稿するfunction(関数)

まず、GASからslackにメッセージを投稿するには、どうやって送ればよいのか?
下記のサイトを参考にしてみた。


まずは、サンプルコードをコピって過去に書いていたスプシからデータを取得するfunctionをオフにしておく。

画像1

function autoNotice を読み解きつつ書き換えてみる。
まずはctrl+Hで置き換えを呼び出し、varをconstに置き換える。なお、varのままでどんな実害があるのかは正直分かっていない。

ユーザID(メンバーID)はslackから自分のIDを取得する。このメンションは無くてもいいが、いまは素直に置き換える。なお、チャンネルメンションの際は

<!channel>

となる。

WebHookURLを置き換える。えーと、昨日slackにインテグレーションして~えっと、URLどこだっけかな~slackの管理画面から確認する。

画像2

画像3

画像4

画像5

これで書き換えたので実行してみる。権限承認、許可をして、実行ログが実行完了になったのでslackを確認すると、ちゃんとメッセージきてました。やったね!この時点では、トリガー設定していないので注意。自分で実行しないと投稿されない。

画像6

スプシから投稿内容を取得してslackに投稿する

ということは、あとは投稿内容をスプシから取得して流したいわけだ。
さて、どうしよう。途中までスクリプトを書いた下記の記事に戻ってみる。

関数の呼び出し、で出来そうな気がする。が、これ、なにをどうやって置き換えたり組み替えるんだろうな???チャットワークのやつはライブラリでやってるが、これはfunctionでやってる、どうすんだ?

const contents = ` テスト` このcontentsをスプシから取得したやつにしたいわけよ。うーんうーん、うにゃうにゃ考えつつ、消したり書いたりして、
const body = sheet.getRange(i, 1).getValue(); で定義してから body を呼び出して、メッセージ投稿でいけそう。

画像7

やった~~~~!できた~~~~!うれしい!
狙った動きができると、うれしい!天才かと思う。
その前に、なんでーーーーと何度もなってるけどね!!!!


現時点のコードはこう。メモ間違ってたらごめん。

画像8


あとはbotのアイコン、名前を変えたい。あとトリガー設定で時間指定。
アイコンはicon_emoji 名前はusername とかで出来そうなんだろうか。

トリガー設定

まずはトリガー設定をする。やったことがあるような気がするが、下記を読む。

1分ごと設定で、ちゃんときた~~~!
じーっとスプシを眺めていると、TRUEが書き込まれていく。
GASちゃん、えらいぞ、よしよし。ひとしきり愛でたら、1日1回くらいに変更して、一旦これでよし。botとしては、ひとまずこれで区切りがついたが、引き続き、連載記事を読んでみる。

プロパティストア/スクリプトプロパティ

うむ、さっきのコードのスクショもそうだが、いちいちモザイクかけたりしてめんどくさかった。そうか、そういうメールだとかURLだとかは別のところから呼び出す的なことができんのね。

セットして格納して呼び出す、というのをどうにかこうにか。

つかりたので今日はここまで!!!!
GJ自分!!!



残りの課題


botの名前を変える。
botのアイコンを変える。


botは、天気予報だとか電車遅延だとかカレンダ通知とか慰めの言葉だとか応用がいろいろ考えられる。
ただ、slack純正のbotでもカスタムレスポンスで「疲れた」って言ったら「お疲れ!」はできるんだよな。
あと、カレンダもGoogleカレンダをインテグレーションすれば通知は来る。
勉強のためにはGASでいろいろやってみるが、そのbotほんとにいる?みたいなことになるので注意。

蛇足:function=関数って言われるけど、functionのままのほうがすんなり理解できる気がする。It can function very well ! 
二日酔いなら I can't function today.


いいなと思ったら応援しよう!

good-sun(a03)
いただいたサポートで、書籍代や勉強費用にしたり、美味しいもの食べたりします!