【GAS修行⑦】Googleフォーム連携の読書管理Slack BOT作成
【GAS修行⑦】Googleフォーム連携の読書管理Slack BOT作成:
・GAS熟練者への道。
・先人達のコードの「写経&コピー」の駆使の成果物のまとめ。
・第七弾
・第一弾・第二弾・第三弾・第四弾・第五弾・第六弾はこちら。
・「七回目か。作れるものは大量にあれど、個人的に必要なアプリはそこまでないな。」
・「今回はスクレイピングではなくて、他のGoogle Apps連携のツールにしよう。」
・「決めた。これさえあれば、秒速で管理名誉職人ですな。」
→そういうわけで、今回もサンプルアプリと仏様サイトを発見。
https://qiita.com/pchan52/items/574e930a3cc42cf7f8b9
→「また参考(※マルコピ)に作るか。」
→取り組み開始。
・実際の画面はこちらです。
※以下の項目を自分のものに変えるのを忘れない。
・Incoming WebHooksのトークン(先程メモしたもの。)
・Slackチャンネル名(test関数とonFormSubmit関数の中の2つ。)
・GAS熟練者への道。
・先人達のコードの「写経&コピー」の駆使の成果物のまとめ。
・第七弾
・第一弾・第二弾・第三弾・第四弾・第五弾・第六弾はこちら。
経緯
・「七回目か。作れるものは大量にあれど、個人的に必要なアプリはそこまでないな。」・「今回はスクレイピングではなくて、他のGoogle Apps連携のツールにしよう。」
・「決めた。これさえあれば、秒速で管理名誉職人ですな。」
→そういうわけで、今回もサンプルアプリと仏様サイトを発見。
https://qiita.com/pchan52/items/574e930a3cc42cf7f8b9
→「また参考(※マルコピ)に作るか。」
→取り組み開始。
概要
- Googleフォーム(読書アンケート)に回答すると、回答内容をSlcakに通知してくれる。
→読書家として境地上げが可能。
結果
・実際の画面はこちらです。
作成環境
- Google App Script
- Incoming WebHooks
※Slackがない場合は、一人用のSlackを開設しましょう。(何かと役に立つ。)
手順
Google Apps Scriptの設定
- GoogleドライブからGoogleフォームを起動。
※Googleアカウントを持っていない人は、作成する。
- Googleフォームの質問等を下記のように作成
※自分の好きな内容でも良いが、これをベースにコードを書いていく。
- フォーム作成後、これに紐づいたスクリプトエディタ起動。
- 起動したプロジェクトに名前をつける
※プロジェクト名が反映されるわけではないが、自分がわかる名前をつける。
→保存。(最初の3行のままで良い。) - 一旦置いておく。
Slack Incoming WebHooksの設定
- Incoming WebHooksのトークンを発行。
コード
- スクリプトエディタに戻り、下記のコードをコピーして、保存。
slack-translate.gs
function sendToSlack(body, channel) { var url = "Incoming WebHooksのトークンを書く。"; var data = { "channel" : channel, "username" : "ふぉーみんぐエンジェル", "text" : body, "icon_emoji" : ":grin:" }; var payload = JSON.stringify(data); var options = { "method" : "POST", "contentType" : "application/json", "payload" : payload }; var response = UrlFetchApp.fetch(url, options); } function test() { sendToSlack("テスト通知確認です", "#チャンネル名を書く"); } function onFormSubmit(e){ var body = "回答受諾。即刻確認せよ。\nさもなくば・・・・・(*'ω'*)\n"; var applicant = ""; var itemResponse = e.response.getItemResponses(); for (var j = 0; j < itemResponse.length; j++){ var formData = itemResponse[j]; var title = formData.getItem().getTitle(); var response = formData.getResponse(); // 質問内容と合わせる。(できるだけ短めに。) switch (title) { case "名前": name = response; break; case "タイトル": bookTitle = response; break; case "作者": author = response; break; case "ジャンル": genre = response; break; case "一言感想": impression = response; break; case "購入URL(任意)": buyUrl = response; break; default: break; } } var bodyPublic = body + "「名前」 : " + name + "\n「タイトル」 : " + bookTitle + "\n「作者」 : " + author + "\n「ジャンル」 : " + genre + "\n「「一言感想」 : " + impression + "\n「URL」(Amazon等) : " + buyUrl; sendToSlack(bodyPublic, "#チャンネル名を書く"); }
・Incoming WebHooksのトークン(先程メモしたもの。)
・Slackチャンネル名(test関数とonFormSubmit関数の中の2つ。)
- 自分のコードに書き換えて保存。
- 保存後、「test」関数を実行して、テストメッセージ通知確認。
- スクリプトエディタ内の上部メニューの「関数名」の部分を「test」に変更して、二つ左の「▶」ボタンで実行。
- 通知確認後、フォーム押下の時にコードを実行してもらうために、トリガーを設定。
- 保存後、実際にフォームに回答して動作確認。
- 正常に動作すれば、完了。
まとめ
- 今回は、Googleフォーム連携ということで、日程調整や軽いアンケートにも使えると実感。
- LINEへの応用も簡単だが、今回はSlackで作成したい衝動を抑えるつもりもなく、従順になる。
- これを見てくださるエンジニアの皆様、
「そんなコードで満足してるとか、お前はまだまだ俺らのステージへは上がってこれなさそうだな。」とか
「俺ならこれの何倍も簡単かつ効率的な管理ツール作れまっせ。」等の意見を何卒お待ちしております。
参考
-
https://qiita.com/pchan52/items/574e930a3cc42cf7f8b9
→このサイトを丸々参考(マルコピ)にしました。大変お世話になりました。
コメント
コメントを投稿