Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ClaspとTypescriptで Google Apps Scriptを動かす / serv...
Search
Hidetaka Okamoto
January 25, 2020
Programming
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ClaspとTypescriptで Google Apps Scriptを動かす / serverlesskobe20200125
Serverless Meetup Kobe vol1 2020/01/25
#serverlesskobe
Hidetaka Okamoto
January 25, 2020
More Decks by Hidetaka Okamoto
See All by Hidetaka Okamoto
OpenAI APIで API Changelogを要約してみた話 / chatgpt-osaka-1
hideokamoto
0
720
コミュニティ運営から 中の人に変わって感じたこと
hideokamoto
0
150
Developerが Developer Advocateになった話 / dev-rel-meetup-tokyo-71
hideokamoto
0
390
Jamstack開発者のための App Runner入門
hideokamoto
1
560
WordPressでの webサイト制作2022 / ngk2022s
hideokamoto
0
500
JavaScript(TypeScript)で メディアサイトを インフラから構築する方法 / jsconf-jp-2021
hideokamoto
2
4.4k
AWS上でStripeを利用したアプリをより安全にデプロイする方法 /jaws-pankration-2021
hideokamoto
1
250
Shifter Headlessと Headless WordPressの紹介
hideokamoto
0
2.2k
Stripe & Next.js + AWS Amplify で会員 + 定期課金機能 / JP_Stripes20210903
hideokamoto
7
3.3k
Other Decks in Programming
See All in Programming
GKE アップグレード前に知っておきたい Blue/Green と PDB の関係
stkk
0
160
[DroidKaigi 2026] Bring your own phones to Gradle Managed Devices
f2lk
0
110
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
660
ハーネス設計入門 〜プロンプト、コンテキストの次〜
kinopeee
56
37k
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
140
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
160
Heart of Swift Concurrency
koher
0
180
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
3
520
kubernetes コンポーネント開発入門 / 新卒N年目の勉強会&交流会!〜〇〇への誘い〜 #n_study
mazrean
0
200
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
700
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
kentaroutakeda
0
150
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
3
1.5k
Featured
See All Featured
From π to Pie charts
rasagy
0
360
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
700
Optimising Largest Contentful Paint
csswizardry
37
3.9k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.9k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
270
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
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