Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
20220706_Google Apps Scriptを実演で学ぶ~ GAS × Slack ~
Search
Apachan
July 06, 2022
Programming
2
1.5k
20220706_Google Apps Scriptを実演で学ぶ~ GAS × Slack ~
Apachan
July 06, 2022
Tweet
Share
More Decks by Apachan
See All by Apachan
20220428_実務で使える Google Apps Script ライブデモ勉強会#3
apachan
0
460
20211111_実務で使えるGASライブデモ勉強会#2
apachan
0
97
20210921_LT_RPAの現実
apachan
0
2.5k
20210827_RPA勉強会!Google Apps Talk~GASでGmail活用術~
apachan
0
9.9k
実務で使えるGASライブデモ勉強会
apachan
0
88
Other Decks in Programming
See All in Programming
chibiccをCILに移植した結果 (NGK2025S版)
kekyo
PRO
0
210
Spring gRPC について / About Spring gRPC
mackey0225
0
220
負債になりにくいCSSをデザイナとつくるには?
fsubal
9
2.3k
Unity Android XR入門
sakutama_11
0
140
Honoのおもしろいミドルウェアをみてみよう
yusukebe
1
200
テストをしないQAエンジニアは何をしているか?
nealle
0
130
Lottieアニメーションをカスタマイズしてみた
tahia910
0
120
Compose でデザインと実装の差異を減らすための取り組み
oidy
1
300
チームリードになって変わったこと
isaka1022
0
190
AWSマネコンに複数のアカウントで入れるようになりました
yuhta28
2
160
自分ひとりから始められる生産性向上の取り組み #でぃーぷらすオオサカ
irof
8
2.6k
Domain-Driven Transformation
hschwentner
2
1.9k
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
27
1.9k
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
It's Worth the Effort
3n
184
28k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
29
2.2k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Practical Orchestrator
shlominoach
186
10k
Gamification - CAS2011
davidbonilla
80
5.1k
We Have a Design System, Now What?
morganepeng
51
7.4k
GitHub's CSS Performance
jonrohan
1030
460k
Building Your Own Lightsaber
phodgson
104
6.2k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
29
4.6k
Transcript
2021/07/06 1 ※ 本内容は個人的な見解であり、所属する組織と関係ありません。 Google Apps Script を実演で学ぶ ~ GAS
× Slack ~ Block Kit Builderを使おう
自己紹介 あぱchan @ApachanHonpo 埼玉県戸田市 宮城県仙台市 業務効率化のお仕事 2 2021年 11月 WinActor
トーク 6ヵ月20kg減
執筆書籍 3 徹底解説 RPAツールWinActor導入 ・応用 完全ガイド 絶対失敗しない!ロボット1000体 導入してわかったRPA成功の秘訣 Google Apps
Script目的別リファ レンス実践サンプルコード付き 需要のある技術を中心に出版社に提案 第3版 2021/3 発売 第1版 2020/5 発売 第1版 2020/8 発売 Google Apps Script目的別リファ レンス実践サンプルコード付き 第2版 2022/5 新発売
主なイベント登壇 4 RPA Community Google Apps Script の特徴・利用のきっかけ 必要な情報をメールから取得する方法 TechStreet
vol.1 2021/07 vol.2 2021/11 vol.3 2022/04 2022/7/6 Google Apps Scriptを実演で学ぶ~「GAS×Slack」 &「GAS×Notion」~
テーマ 5 Block Kit Builderを使おう
6 Block Kit クリーンで一貫性のあるUIフレームワーク https://api.slack.com/block-kit
7 Block Kit Builder 画面操作でUIを作成 UI選択 UI反映 編集 ※ ワークスペースへのサインイン必須
8 今回のデモ ① Slackチャンネルに通知 GAS プロジェクト Slack チャンネル ② Slackチャンネルからの通信(参考)
9 ワークフロー① 難易度:易 Slackチャンネルに通知 GAS プロジェクト Slack チャンネル
10 Incoming Webhook パターン 利用可能プラン 説明 カスタムインテグレー ション 全プラン かんたんに設定できますが、現在Slack社より非推奨
とされています。 SlackApp 全プラン やや複雑ですが手順がわかれば利用自体は難しくあ りません。 ワークフロービルダー スタンダード以上 ※ フリープラン不 可 かんたんに設定できますが、フリープランでは利用 できません。テキストにメンションやハイパーリン ク文字列など入れることができません。 ※ レスポンスが必要な場合はAPI利用
11 Slack App https://api.slack.com/apps Webhook URLの取得 ※ 無償版のアプリ作成は10個迄
12 Let’s Try
13 前提 function sendSlackMessage_ (url, data) { const params =
{ method: 'post', contentType: 'application/json' , payload: JSON.stringify(data) }; const res = UrlFetchApp.fetch(url, params); return res; } スクリプトプロパティの活用 Slack通知処理の分割
14 コーディング const PROPS = PropertiesService.getScriptProperties(); function gasToSlack() { const
webhook = PROPS.getProperty('webhook'); console.log(webhook); const data = { // Bloclk Kit コード 貼り付け }; const response = sendSlackMessage_(webhook, data); Logger.log(response); } スクリプトプロパティ Slack通知処理の分割
Slack チャンネル 15 ワークフロー➁ 難易度:中~高 Slackチャンネルからの通信 GAS プロジェクト デプロイなど各種設定、 doPost()、GCP...など
Block Kit 16 勤怠アプリ
17 GAS側 Webアプリ HTTPリクエストの取得 発動する関数 doPost(e)
18 Slack側 エンドポイント SlackからGASの通信設定
Code Slackからのリクエスト取得 19 function doPost(e) { console.log(e); Logger.log(e); // 意図的にエラー
宣言してない変数 name }
ログの比較 20 GAS GCP 何もなし ログ参照
Code シートへの書き出し 21 function doPost(e) { const payload = JSON.parse(e['parameter']['payload']);
const ssId = PROPS.getProperty('SSID'); const sh = SpreadsheetApp.openById(ssId).getSheets()[0]; sh.appendRow([payload]); }
Demo 22
課題のまとめ 23 ① doPost(e) GASのプロジェクトからログが参照できません GCPに連携してロギングを参照するか、スプレッドシートなどに書き出す必要あり ② JSON解析 階層が深い...リファレンスを見た方が良いのかも... ③
デプロイ Slackからの通信のため「テストのデプロイ」が利用できません コードが変わる度にデプロイの必要あり ④ 非同期通信 UI入力毎に通信が走る おそらく同期処理にできるはず... ⑤ 例外処理の設定 想定外のリクエストの処理
① doPost(e) GCPのロギング 24 ログの参照
② JSON解析 e['parameter']['payload'] 25 登録ボタンの判定 ユーザーの取得 入力内容の取得
Appendix 26
27 Google Slides
End Of File 28