Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GCPと連携してマスターデータ更新
Search
SatohJohn
November 02, 2022
Programming
0
230
GCPと連携してマスターデータ更新
[GDG Osaka] GASによる業務改善勉強会で発表をした内容になります。
https://gdgosaka.connpass.com/event/261885/
SatohJohn
November 02, 2022
Tweet
Share
More Decks by SatohJohn
See All by SatohJohn
NVIDIA NeMo Agent Tooklit を使ってみた
satohjohn
0
40
Gemini Enterprise を恐れない - Securityと監査-
satohjohn
0
100
進化の早すぎる生成 AI と向き合う
satohjohn
0
570
お前も Gemini CLI extensions を作らないか?
satohjohn
0
120
検索システムにおけるセキュリティ
satohjohn
0
81
Feature Flag 開発を標準化し、加速させる OpenFeature を導入する
satohjohn
4
2.4k
ADK Java が出たので AI Agent を作ろう
satohjohn
0
170
NotebookLM + Agentspace を使った(開発)体験
satohjohn
1
850
Open Feature 面白いぞ
satohjohn
0
110
Other Decks in Programming
See All in Programming
dnx で実行できるコマンド、作ってみました
tomohisa
0
150
配送計画の均等化機能を提供する取り組みについて(⽩⾦鉱業 Meetup Vol.21@六本⽊(数理最適化編))
izu_nori
0
150
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
800
React Native New Architecture 移行実践報告
taminif
1
150
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
110
非同期処理の迷宮を抜ける: 初学者がつまづく構造的な原因
pd1xx
1
710
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
9
1.1k
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
6
2.2k
DSPy Meetup Tokyo #1 - はじめてのDSPy
masahiro_nishimi
1
160
Socio-Technical Evolution: Growing an Architecture and Its Organization for Fast Flow
cer
PRO
0
330
tparseでgo testの出力を見やすくする
utgwkk
1
210
【CA.ai #3】ワークフローから見直すAIエージェント — 必要な場面と“選ばない”判断
satoaoaka
0
240
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.6k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Done Done
chrislema
186
16k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Making Projects Easy
brettharned
120
6.5k
Code Review Best Practice
trishagee
74
19k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.2k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.2k
Transcript
GCPと連携して マスターデータ更新 [GDG Osaka] GASによる業務改善勉強会 2022/11/02 佐藤慧太
軽い自己紹介 - 佐藤慧太( @SatohJohn ) - フリュー株式会社 ( 渋谷 )
- 社内でGCPの営業として 活動しています
新規事業とかで Spread Sheetでマスターデータ管理 ってよくやりますよね
で、Masterデータをもとに DBを更新するじゃないですか
でも、DBはprivate IPしか許可せず 直接繋げないんです
そんなときに Cloud Functionを通して DBを叩く!
つまり セキュリティの硬いDBに対して Serverless VPCを通した Cloud Functionを通して アクセスする
メリット - 運用メンバー、企画メンバーが書いているスプレッドシートをそのままMasterとして 利用できる - GCPのアプリケーションからFunctionsやCloudRunなどを叩くことができる - 複雑な処理を書ける - 認証通せるので、関数自体は叩かれまくることはなく安全
- GASを叩ける人を決められる (spread sheetの共有とGASを叩く人が違う場合)
デメリット - 1GCPプロジェクトしか紐付けできない - 開発系と本番系とー、ってなるとめんどい。 VPCを色々イジる必要がある。
構成
やりかた
やりかた(GASとGCPを紐付ける1) GASの方でプロジェクトの認証をする (projectIDじゃなくプロジェクト番号なの注意)
やりかた(GASとGCPを紐付ける2) GCP Projectの方でクライアントが自動的に作られる
やりかた(GASとGCPを紐付ける3) OAuth同意画面で公開ステータス「テスト」 ってなっている場合、 テストユーザを追加する
やりかた(Functionを作る) 認証ありでCloud Functionを作成する(ここは自由、ただし私はNode.jsが好きです)
やりかた(GASを作る) // Cloud Functionsとの接続 / Cloud Functionsに対して、HTTPトリガーの発火をする function post(payload) {
const url = "https://hogehoge" const token = ScriptApp.getIdentityToken() UrlFetchApp.fetch({ url, method: 'post', payload: JSON.stringify(payload), contentType: 'application/json', headers: { Authorization: `Bearer ${token}` } }) } ScriptAppのgetIdentityTokenをつかって認証ができる!
実行をしよう
実行をしよう
感じたこと - 思ったよりもかんたんに実装ができるぞ - 今まで、GCPプロジェクト側からSpread Sheetへの参照をしていた - service accountの作成して、spread sheetに参照権限もたせてた
- GCPの「組織」を使ってやると、公開アプリケーションとして配布できるのでなんか 色々できる - と思う
おしまい