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
490
20211111_実務で使えるGASライブデモ勉強会#2
apachan
0
100
20210921_LT_RPAの現実
apachan
0
2.6k
20210827_RPA勉強会!Google Apps Talk~GASでGmail活用術~
apachan
0
10k
実務で使えるGASライブデモ勉強会
apachan
0
94
Other Decks in Programming
See All in Programming
スタートアップの急成長を支えるプラットフォームエンジニアリングと組織戦略
sutochin26
1
5.6k
「Cursor/Devin全社導入の理想と現実」のその後
saitoryc
0
820
Rails Frontend Evolution: It Was a Setup All Along
skryukov
0
140
RailsGirls IZUMO スポンサーLT
16bitidol
0
180
チームのテスト力を総合的に鍛えて品質、スピード、レジリエンスを共立させる/Testing approach that improves quality, speed, and resilience
goyoki
5
870
dbt民主化とLLMによる開発ブースト ~ AI Readyな分析サイクルを目指して ~
yoshyum
3
1k
なぜ「共通化」を考え、失敗を繰り返すのか
rinchoku
1
650
Claude Code + Container Use と Cursor で作る ローカル並列開発環境のススメ / ccc local dev
kaelaela
9
5.1k
レベル1の開発生産性向上に取り組む − 日々の作業の効率化・自動化を通じた改善活動
kesoji
0
200
ニーリーにおけるプロダクトエンジニア
nealle
0
830
AIともっと楽するE2Eテスト
myohei
6
2.6k
AI コーディングエージェントの時代へ:JetBrains が描く開発の未来
masaruhr
1
150
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
134
9.4k
Making Projects Easy
brettharned
116
6.3k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Typedesign – Prime Four
hannesfritz
42
2.7k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.4k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
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