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
94
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
510
コミュニティ運営から 中の人に変わって感じたこと
hideokamoto
0
66
Developerが Developer Advocateになった話 / dev-rel-meetup-tokyo-71
hideokamoto
0
300
Jamstack開発者のための App Runner入門
hideokamoto
1
450
WordPressでの webサイト制作2022 / ngk2022s
hideokamoto
0
400
JavaScript(TypeScript)で メディアサイトを インフラから構築する方法 / jsconf-jp-2021
hideokamoto
2
4.1k
AWS上でStripeを利用したアプリをより安全にデプロイする方法 /jaws-pankration-2021
hideokamoto
1
180
Shifter Headlessと Headless WordPressの紹介
hideokamoto
0
1.7k
Stripe & Next.js + AWS Amplify で会員 + 定期課金機能 / JP_Stripes20210903
hideokamoto
7
3.1k
Other Decks in Programming
See All in Programming
2025.2.14_Developers Summit 2025_登壇資料
0101unite
0
220
JAWS Days 2025のインフラ
komakichi
1
120
メンテが命: PHPフレームワークのコンテナ化とアップグレード戦略
shunta27
0
310
React 19アップデートのために必要なこと
uhyo
8
1.5k
第3回関東Kaggler会_AtCoderはKaggleの役に立つ
chettub
3
1.2k
SwiftUI Viewの責務分離
elmetal
PRO
2
280
未経験でSRE、はじめました! 組織を支える役割と軌跡
curekoshimizu
1
170
ML.NETで始める機械学習
ymd65536
0
240
コミュニティ駆動 AWS CDK ライブラリ「Open Constructs Library」 / community-cdk-library
gotok365
2
250
Jakarta EE meets AI
ivargrimstad
0
530
PHPカンファレンス名古屋2025 タスク分解の試行錯誤〜レビュー負荷を下げるために〜
soichi
1
730
新宿駅構内を三人称視点で探索してみる
satoshi7190
2
120
Featured
See All Featured
Scaling GitHub
holman
459
140k
Music & Morning Musume
bryan
46
6.4k
Building Applications with DynamoDB
mza
93
6.2k
KATA
mclloyd
29
14k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.2k
A Philosophy of Restraint
colly
203
16k
Raft: Consensus for Rubyists
vanstee
137
6.8k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
21
2.5k
YesSQL, Process and Tooling at Scale
rocio
172
14k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
46
2.4k
What's in a price? How to price your products and services
michaelherold
244
12k
A designer walks into a library…
pauljervisheath
205
24k
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