Slide 1

Slide 1 text

環境構築はいらないよ GASでサクッとbotをつくろう サイボウズ株式会社 チーム 鈴木 亜耶 (@szkayeah)

Slide 2

Slide 2 text

はなすひと ▌鈴木 亜耶 (@szkayeah)  サイボウズのエンジニア  今年1月に中途入社  好き:CI・自動化・自動テスト  チーム所属

Slide 3

Slide 3 text

おしながき ▌GASとは ▌やってみよう  用意するもの  動く・呼べる・渡せる・返ってくる ▌おわりに

Slide 4

Slide 4 text

GASとは

Slide 5

Slide 5 text

GASとは ▌Google Apps Scriptの通称(がす・ぎゃす) ▌環境構築なしですぐ書ける・動かせる ▌Googleの各サービスと容易に連携 ▌APIとして実行できる ▌定期実行できる

Slide 6

Slide 6 text

GASとは ▌ブラウザ上でコーディング

Slide 7

Slide 7 text

やってみよう 準備するもの

Slide 8

Slide 8 text

用意するもの ▌今回はGASでGoogle Spread SheetとSlackを連携 ▌いるもの  Googleアカウント  Slackアカウント

Slide 9

Slide 9 text

やってみよう [動く]・呼べる・渡せる・返ってくる ↑

Slide 10

Slide 10 text

やること ▌GASを動かす Google Spread Sheet Google Apps Script データ登録 出典:https://slack.com/

Slide 11

Slide 11 text

Googleドライブでスプレッドシートを作成し開く

Slide 12

Slide 12 text

スプレッドシートIDを確認しスクリプトエディタを開く

Slide 13

Slide 13 text

エディタのmyFunction関数の中身を書いて保存

Slide 14

Slide 14 text

とりあえず4行! function myFunction() { var sheet = SpreadsheetApp.openById(‘スプレッドシートID'); var lastRow = sheet.getLastRow(); var date = new Date(); sheet.getRange('A' + String(lastRow + 1)).setValue(date); }

Slide 15

Slide 15 text

実行ボタンをぽちっとしてスプレッドシートへ

Slide 16

Slide 16 text

なんか入ってる!!!

Slide 17

Slide 17 text

Date型なので表示を変えれば時間も

Slide 18

Slide 18 text

やってみよう 動く・[呼べる]・渡せる・返ってくる ↑

Slide 19

Slide 19 text

やること ▌SlackからAPI化したGASを呼ぶ Google Spread Sheet Google Apps Script パラメータ なしで実行 データ登録 出典:https://slack.com/

Slide 20

Slide 20 text

Slackにログインして適当なチャンネルを作る

Slide 21

Slide 21 text

Appsへ

Slide 22

Slide 22 text

Outgoing WebHooksをインストール

Slide 23

Slide 23 text

Outgoing WebHooksの設定を保存 作ったチャンネルを選択

Slide 24

Slide 24 text

Outgoing WebHooksの設定を保存 この単語が含まれる Slack投稿でGASが実行される

Slide 25

Slide 25 text

Outgoing WebHooksの設定を保存 トークンをコピーして GASの方へ移動

Slide 26

Slide 26 text

doPost関数を作る function doPost(req) { // TokenCheck if (req.parameter.token != “Slackのトークン") { return; } myFunction(); } function myFunction() { var sheet = SpreadsheetApp.openById(‘スプレッドシートID'); var lastRow = sheet.getLastRow(); var date = new Date(); sheet.getRange('A' + String(lastRow + 1)).setValue(date); }

Slide 27

Slide 27 text

GASでウェブアプリケーションとして導入を選択

Slide 28

Slide 28 text

アクセスできるユーザーは匿名ユーザー含め全員に

Slide 29

Slide 29 text

設定が完了するとURLが発行されるのでSlackへ

Slide 30

Slide 30 text

Outgoing WebHooksの設定でURLを入れて保存

Slide 31

Slide 31 text

あとはTrigger Wordを含むSlack投稿をすれば…

Slide 32

Slide 32 text

行が増えた!!!

Slide 33

Slide 33 text

やってみよう 動く・呼べる・[渡せる]・返ってくる ↑

Slide 34

Slide 34 text

やること ▌Slackの投稿内容をスプレッドシートに渡す Google Spread Sheet Google Apps Script パラメータ ありで実行 データ登録 出典:https://slack.com/

Slide 35

Slide 35 text

doPost関数でパラメータを受け取る function doPost(req) { // TokenCheck if (req.parameter.token != “Slackのトークン") { return; } var textArray = req.parameter.text.split(":"); // コロンの後ろに文字がある場合のみ実行 if (textArray.length > 1) { myFunction(textArray[1]); } }

Slide 36

Slide 36 text

myFunction関数で引数を受け取る function myFunction(text) { var sheet = SpreadsheetApp.openById(‘スプレッドシートID'); var lastRow = sheet.getLastRow(); sheet.getRange('A' + String(lastRow + 1)).setValue(text); }

Slide 37

Slide 37 text

はまりポイント!!! 一度ウェブアプリケーションとして公開してから 修正を加えた場合、 プロジェクトバージョンを上げないと反映されない。

Slide 38

Slide 38 text

うまくいけばgas:より後ろの文字がスプレッドシートに入る

Slide 39

Slide 39 text

やってみよう 動く・呼べる・渡せる・[返ってくる] ↑

Slide 40

Slide 40 text

やること ▌スプレッドシートに登録されたらSlackで通知を受ける Google Spread Sheet Google Apps Script パラメータ ありで実行 投稿する データ登録 出典:https://slack.com/

Slide 41

Slide 41 text

SlackでIncoming WebHooksをインストール

Slide 42

Slide 42 text

Incoming WebHooksの設定を保存 チャンネル選択 URLをコピーしてGASの方へ移動

Slide 43

Slide 43 text

SlackへPOSTする関数を作る function postSlack(text) { var url = “SlackのIncomingWebHooksのURL"; var payload = { "text" : text }; var options = { "method" : "POST", "payload" : JSON.stringify(payload) }; UrlFetchApp.fetch(url, options); }

Slide 44

Slide 44 text

doPost関数でpostSlack関数を呼ぶ function doPost(req) { // TokenCheck if (req.parameter.token != “Slackのトークン") { return; } var textArray = req.parameter.text.split(":"); // コロンの後ろに文字がある場合のみ実行 if (textArray.length > 1) { myFunction(textArray[1]); postSlack(textArray[1]); } }

Slide 45

Slide 45 text

GASのプロジェクトバージョンを上げて保存したら試す

Slide 46

Slide 46 text

やまびこキタ――(゚∀゚)――!!

Slide 47

Slide 47 text

おわりに

Slide 48

Slide 48 text

おわりに ▌今回はGASを叩く・GASから叩くの両方やった ▌GASお手軽!便利!(伝わった?) ▌組み合わせる楽しさ ▌本当はAmazonDashButton→GASをやりたかった

Slide 49

Slide 49 text

参考情報 ▌Google Apps Script  https://developers.google.com/apps-script/ ▌Slack API  https://api.slack.com/ ▌今回作ったコード  https://github.com/szkayeah/Bot/blob/master/hel loGasBot/helloGasBot.gs

Slide 50

Slide 50 text

ありがとうございました!