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
ClaspとTypescriptで Google Apps Scriptを動かす / serv...
Search
Hidetaka Okamoto
January 25, 2020
Programming
0
100
ClaspとTypescriptで Google Apps Scriptを動かす / serverlesskobe20200125
Serverless Meetup Kobe vol1 2020/01/25
#serverlesskobe
Hidetaka Okamoto
January 25, 2020
Tweet
Share
More Decks by Hidetaka Okamoto
See All by Hidetaka Okamoto
OpenAI APIで API Changelogを要約してみた話 / chatgpt-osaka-1
hideokamoto
0
570
コミュニティ運営から 中の人に変わって感じたこと
hideokamoto
0
79
Developerが Developer Advocateになった話 / dev-rel-meetup-tokyo-71
hideokamoto
0
330
Jamstack開発者のための App Runner入門
hideokamoto
1
480
WordPressでの webサイト制作2022 / ngk2022s
hideokamoto
0
430
JavaScript(TypeScript)で メディアサイトを インフラから構築する方法 / jsconf-jp-2021
hideokamoto
2
4.2k
AWS上でStripeを利用したアプリをより安全にデプロイする方法 /jaws-pankration-2021
hideokamoto
1
190
Shifter Headlessと Headless WordPressの紹介
hideokamoto
0
1.8k
Stripe & Next.js + AWS Amplify で会員 + 定期課金機能 / JP_Stripes20210903
hideokamoto
7
3.2k
Other Decks in Programming
See All in Programming
0626 Findy Product Manager LT Night_高田スライド_speaker deck用
mana_takada
0
110
#kanrk08 / 公開版 PicoRubyとマイコンでの自作トレーニング計測装置を用いたワークアウトの理想と現実
bash0c7
1
440
設計やレビューに悩んでいるPHPerに贈る、クリーンなオブジェクト設計の指針たち
panda_program
6
1.4k
PHP 8.4の新機能「プロパティフック」から学ぶオブジェクト指向設計とリスコフの置換原則
kentaroutakeda
2
540
git worktree × Claude Code × MCP ~生成AI時代の並列開発フロー~
hisuzuya
1
480
つよそうにふるまい、つよい成果を出すのなら、つよいのかもしれない
irof
1
300
20250628_非エンジニアがバイブコーディングしてみた
ponponmikankan
0
430
Create a website using Spatial Web
akkeylab
0
300
XP, Testing and ninja testing
m_seki
3
190
Systèmes distribués, pour le meilleur et pour le pire - BreizhCamp 2025 - Conférence
slecache
0
110
GitHub Copilot and GitHub Codespaces Hands-on
ymd65536
1
120
ReadMoreTextView
fornewid
1
480
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Adopting Sorbet at Scale
ufuk
77
9.4k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
490
It's Worth the Effort
3n
185
28k
RailsConf 2023
tenderlove
30
1.1k
Rebuilding a faster, lazier Slack
samanthasiow
82
9.1k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.5k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
281
13k
GitHub's CSS Performance
jonrohan
1031
460k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
Transcript
ClaspͱTypescriptͰ Google Apps ScriptΛಈ͔͢ Serverless Meetup Kobe vol1 2020/01/25 #serverlesskobe
About: Hidetaka Okamoto גࣜձࣾσδλϧΩϡʔϒ "MFYB$IBNQJPOT 3FBDU5ZQF4DSJQU"84 #serverlesskobe
About: Hidetaka Okamoto גࣜձࣾσδλϧΩϡʔϒ "MFYB$IBNQJPOT 3FBDU5ZQF4DSJQU"84 #serverlesskobe
#serverlesskobe
Agenda Γ͔ͨͬͨ͜ͱ (PPHMF"QQT4DSJQUͷίʔυΛϩʔΧϧͰ։ൃ͢Δ 5ZQF4DSJQUΛͬͯ։ൃΛΑΓศརʹ͢Δ ͓ΘΓʹ #serverlesskobe
Agenda Γ͔ͨͬͨ͜ͱ (PPHMF"QQT4DSJQUͷίʔυΛϩʔΧϧͰ։ൃ͢Δ 5ZQF4DSJQUΛͬͯ։ൃΛΑΓศརʹ͢Δ ͓ΘΓʹ #serverlesskobe
Γ͔ͨͬͨ͜ͱ ؆୯ͳCPUʢ-*/&PS"MFYBΛఆʣ (PPHMFΧϨϯμʔͷ༧ఆՃΛτϦΨʔʹ͢Δ มߋ͞Εͨ༰Λνϟοτ76*Ͱ௨͢Δ ͍׳Εͨ5ZQF4DSJQUΛ͍͍ͨ #serverlesskobe
࣮ͨ͠ͷ (PPHMF"QQT4DSJQUͰ࣮ (PPHMFΧϨϯμʔΛτϦΨʔʹ࣮ߦ -*/&ͷ.FTTBHF"1*ʹ1045ϦΫΤετ #serverlesskobe
Agenda Γ͔ͨͬͨ͜ͱ (PPHMF"QQT4DSJQUͷίʔυΛϩʔΧϧͰ։ൃ͢Δ 5ZQF4DSJQUΛͬͯ։ൃΛΑΓศརʹ͢Δ ͓ΘΓʹ #serverlesskobe
GOOGLE APPS SCRIPT HTTPS://DEVELOPERS.GOOGLE.COM/APPS-SCRIPT?HL=JA #serverlesskobe
• Google͕ఏڙ͢ΔFaaS • 6ఔͷScript͕࣮ߦՄೳ • ੍ݶࣄ߲G Suite Planґଘ • script.google.comͰཧ
• GUIͰίʔυΛฤूՄೳ • Google Appsͱͷੑ #serverlesskobe
• Google͕ఏڙ͢ΔFaaS • 6ఔͷScript͕࣮ߦՄೳ • ੍ݶࣄ߲G Suite Planґଘ • script.google.comͰཧ
• GUIͰίʔυΛฤूՄೳ • Google Appsͱͷੑ #serverlesskobe
GUI্Ͱ࣮ɾཧͨ͘͠ͳ͍ʂ #serverlesskobe
npm I -g @google/ clasp C ommand L ine A
pps S cript P roject #serverlesskobe
claspͱ (PPHMF͕ϦϦʔε͍ͯ͠Δ("4͚$-*πʔϧ σϓϩΠෳɺεςʔλεͷ֬ೝͳͲͷૢ࡞͕Մೳ DMBTQMPHJOͰϩάΠϯ͢ΔͱɺDMBTQSDKTPOʹೝূใΛه ("4Λ։ൃ͢ΔͳΒ$MBTQҰʢඪຊʣ #serverlesskobe
Google Apps Script APIΛ༗ޮԽ͓ͯ͘͠ https://script.google.com/home/usersettings #serverlesskobe
$ clasp loginͰ ϩάΠϯը໘͕ ্ཱ͕ͪΔ #serverlesskobe
͍Ζ͍Ζͱݖݶ ཁٻ͞ΕΔ Serverless Framework͕ AdministratorAccessཁٻ͢Δͷʹ ͍ۙΑ͏ͳҹ #serverlesskobe
$ cat ~/.clasprc.json tokenͳͲ࿙Β͞ͳ͍Α͏ʹҙ͢Δ #serverlesskobe
$ clasp createͰϓϩδΣΫτΛ࡞͢Δ https://github.com/google/clasp#create #serverlesskobe
createޙʹpullͰ entrypointΛऔಘ Code.jsʹίʔυΛॻ͍ͯ push͢ΕOK #serverlesskobe
claspͰͰ͖Δ͜ͱʢҰ෦ʣ DMBTQQVTIͰσϓϩΠ DMBTQWFSTJPOlzͰόʔδϣϯઃఆ DMBTQWFSTJPOTͰόʔδϣϯҰཡऔಘ DMBTQMPHTͰ࣮ߦϩάͷදࣔʢGSPN4UBDL%SJWFSʣ #serverlesskobe
claspΛͬͯϩʔΧϧͰGAS։ൃ ެࣜπʔϧͷ҆৺ײ όʔδϣχϯά$MPOFͳͲ͋Γखް͍ ("4ͳΒͰϓϩύςΟʹ͍ͭͯࣗྗͰௐΔඞཁ͋Γ ͠ΐ͏͖͡ΊΜͲ͍͘͞ #serverlesskobe
Agenda Γ͔ͨͬͨ͜ͱ (PPHMF"QQT4DSJQUͷίʔυΛϩʔΧϧͰ։ൃ͢Δ 5ZQF4DSJQUΛͬͯ։ൃΛΑΓศརʹ͢Δ ͓ΘΓʹ #serverlesskobe
ͳͥTypeScriptΛ͍͍ͨͷ͔ (PPHMF"QQT͔Β͘Δσʔλͷܕ͕Γ͍ͨ ("4Ͱར༻Ͱ͖ΔάϩʔόϧมܥΛΓ͍ͨ ("4ʹ'FUDI"QQTଓܥͷಠࣗมɾΫϥε͕ଟ͋Δ Կ͕͋Δͷ͔ɺͲ͏͍͍͑ͷ͔ΛάάΓͨ͘ͳ͍ ܕ͕ͳ͍··ॻ͍ͨࣗͷίʔυΛ৴༻Ͱ͖ͳ͍ #serverlesskobe
claspTypeScript ϑϨϯυϦʔ #serverlesskobe
ܕใͷऔಘɿnpm install --save @types/google-apps-script #serverlesskobe
Clasp push࣌ʹτϥϯεύΠϧͯ͘͠ΕΔͷͰɺͦͷ··pushͰ͖Δ #serverlesskobe
Google AppsܥͷAPIʹର͢Δೖྗิڧྗ #serverlesskobe
GoogleΧϨϯμʔ͔ΒͷΠϕϯτσʔλΛܗ͢Δαϯϓϧ #serverlesskobe
LINEͷMessage APIܦ༝ͰϝοηʔδΛૹ৴͢Δαϯϓϧ #serverlesskobe
Claspͷҙ 3FRVJSFJNQPSUΘͳ͍ʢ͏ͳΒXFCQBDLͳͲͰϏϧυʣ ॏ͍ͨ4%,ΛCVOEMF͢ΔͱΞοϓϩʔυͰ͖ͳ͍͜ͱ͕͋Δ -*/&4%,͕μϝͩͬͨͷͰ1045PS"1*(8ՃͰରԠͨ͠ (PPHMFͷυΩϡϝϯτͷάάϥϏϦςΟ͕͍ ʮ("4ͰۀޮԽʂʯܥهࣄʹຒΕͯΔͷͰݕࡧͭΒ͍ #serverlesskobe
ݸਓతGAS(Clasp)͍ॴ (PPHMFܥαʔϏεͷΠϕϯτϒϦοδͱͯ͠ͷ("4 "84ͷΠϕϯτ&WFOU#SJEHF(PPHMF"QQT("4 ۩ମతͳॲཧܥΛ୲͏"1*'BB4Λ༻ҙ͢Δ ("4ͰΠϕϯτσʔλΛཧͯ͠ɺॲཧܥʹ͚͛ͭΔ (PPHMF"QQTܥͷσʔλऩूʹઐ೦͢ΔͷҰͭ #serverlesskobe
Agenda Γ͔ͨͬͨ͜ͱ (PPHMF"QQT4DSJQUͷίʔυΛϩʔΧϧͰ։ൃ͢Δ 5ZQF4DSJQUΛͬͯ։ൃΛΑΓศརʹ͢Δ ͓ΘΓʹ #serverlesskobe
͓ΘΓʹ (PPHMF"QQTܥΛτϦΨʔʹ͢ΔͳΒ("4 (PPHMF"QQT4DSJQU $MBTQΛ͑ϩʔΧϧͰॻ͍ͨίʔυΛσϓϩΠͰ͖Δ 5ZQF4DSJQUͰͷ࣮؆୯ ͨͩ͠༰ྔ੍ݶ͕͋ΔͷͰ%JTQBDIFSҎ্ͷ༻్ผ'BB4Λ #serverlesskobe