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
PHPで始める振る舞い駆動開発(Behaviour-Driven Development)
ohmori_yusuke
2
390
MDN Web Docs に日本語翻訳でコントリビュートしたくなる
ohmori_yusuke
1
120
Google Agent Development Kit でLINE Botを作ってみた
ymd65536
2
250
20250704_教育事業におけるアジャイルなデータ基盤構築
hanon52_
5
780
テストから始めるAgentic Coding 〜Claude Codeと共に行うTDD〜 / Agentic Coding starts with testing
rkaga
12
4.4k
ニーリーにおけるプロダクトエンジニア
nealle
0
830
Result型で“失敗”を型にするPHPコードの書き方
kajitack
5
650
技術同人誌をMCP Serverにしてみた
74th
1
640
Hack Claude Code with Claude Code
choplin
4
2k
なぜ適用するか、移行して理解するClean Architecture 〜構造を超えて設計を継承する〜 / Why Apply, Migrate and Understand Clean Architecture - Inherit Design Beyond Structure
seike460
PRO
3
760
dbt民主化とLLMによる開発ブースト ~ AI Readyな分析サイクルを目指して ~
yoshyum
3
1k
NPOでのDevinの活用
codeforeveryone
0
830
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
Statistics for Hackers
jakevdp
799
220k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
We Have a Design System, Now What?
morganepeng
53
7.7k
The World Runs on Bad Software
bkeepers
PRO
69
11k
Automating Front-end Workflow
addyosmani
1370
200k
Writing Fast Ruby
sferik
628
62k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Agile that works and the tools we love
rasmusluckow
329
21k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
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