SlideShare a Scribd company logo
https://bit.ly/2NghVzg
GoogleAppsScriptとLinebotで
予約管理botを作った
at Shibuya on 2018/10/24
https://supporterzcolab.com/event/570
WATANABE Naoki
1
https://bit.ly/2NghVzg 2
https://bit.ly/2NghVzg 3
https://bit.ly/2NghVzg
Contents
● Google Apps ScriptでSpread sheetを扱う
● Line Messaging APIを使っておうむ返しbotを作る
● spreadsheetとLine botで予約管理をする
4
https://bit.ly/2NghVzg
資料
今回のソースコードの載ったgist (本スライド右下の短縮URLと同じ)
https://gist.github.com/asterisk37n/7067eeb44e7864e9ebb78220992b8b8e
今回は使っていないが、botからのCRUD操作をまとめたgist
https://gist.github.com/asterisk37n/7ba08590a7ab461a6e5d0552f8801af5
5
https://bit.ly/2NghVzg 6
1 message
2 Post
5 Post
6 Message3 データ操作
4 データ操作
の結果
https://bit.ly/2NghVzg
Google Apps Script
7
https://bit.ly/2NghVzg
Google Apps Scriptとは
● Googleが提供する11のサービス (Slide, Spreadsheet, Calendar, Map, …) を
操作することができる
● オンラインで編集できる
● javascriptにしたがう (ただし、windowやES6には対応していない)
8
https://bit.ly/2NghVzg
Good and Bad of GAS
● プロトタイプ作成が容易
● 無料
● nginxやapacheを触らず済む
9
● Git管理に対応していない (有志
が作ったツールはある)
● spreadsheetにはatomicityがない
● ファイルをフォルダに分けられ
ない
● spreadsheetに対するSQLを自作
する必要がある
https://bit.ly/2NghVzg
GASを使ってみる
- Getリクエストに対してjsonを返す -
10
https://bit.ly/2NghVzg 11
https://bit.ly/2NghVzg
doGetおよびdoPostは予約語。
12
https://bit.ly/2NghVzg 13
https://bit.ly/2NghVzg 14
https://bit.ly/2NghVzg 15
https://bit.ly/2NghVzg 16
https://bit.ly/2NghVzg 17
ソースコードの編集後はverを新しくする必要がある
https://bit.ly/2NghVzg
spreadsheetをデータベースに見立て
CRUDオペレーションを実装する
18
https://bit.ly/2NghVzg
createを実装する
19
https://bit.ly/2NghVzg 20
1 message
2 Post
5 Post
6 Message3 データ操作
4 データ操作
の結果
https://bit.ly/2NghVzg 21
https://bit.ly/2NghVzg 22
https://bit.ly/2NghVzg 23
https://bit.ly/2NghVzg 24
https://bit.ly/2NghVzg 25
https://bit.ly/2NghVzg
createをtestする
26
https://bit.ly/2NghVzg 27
https://bit.ly/2NghVzg 28
https://bit.ly/2NghVzg 29
https://bit.ly/2NghVzg 30
https://bit.ly/2NghVzg 31
https://bit.ly/2NghVzg
他のオペレーションはgistにあります
Read, Deleteについてはgistに掲載。Updateは省略した。
32
https://bit.ly/2NghVzg
LINE messaging API
33
https://bit.ly/2NghVzg 34
https://bit.ly/2NghVzg 35
https://bit.ly/2NghVzg 36
1 message
2 Post
5 Post
6 Message3 データ操作
4 データ操作
の結果
https://bit.ly/2NghVzg
おうむ返しbotを作る
37
https://bit.ly/2NghVzg
LINE DEVELOPER CONSOLEでbotを登録
https://developers.line.me/ja/
38
https://bit.ly/2NghVzg 39
https://bit.ly/2NghVzg 40
ここにGASの公開URLを載せる
var CHANNEL_ACCESS_TOKEN = 'ここで発行されたアクセストークン;
https://bit.ly/2NghVzg 41
https://bit.ly/2NghVzg
LINEで「予約作成」と入力すると
一週間後の日時がspreadsheetに
追加されるようにする
42
https://bit.ly/2NghVzg 43
1 message
2 Post
5 Post
6 Message3 データ操作
4 データ操作
の結果
https://bit.ly/2NghVzg 44
https://bit.ly/2NghVzg
参考
Google Apps Script Doc
https://developers.google.com/apps-script/reference/document/
Line Messaging API Doc
https://developers.line.me/en/reference/messaging-api/
CRUD Operation in Google Apps Script and Line Bot
https://gist.github.com/asterisk37n/7ba08590a7ab461a6e5d0552f8801af5
45
Ad

More Related Content

Similar to Create line bot with Google Apps Script (20)

GoでEPC作って本番運用している話
GoでEPC作って本番運用している話GoでEPC作って本番運用している話
GoでEPC作って本番運用している話
雄也 日下部
 
Bot Builder V4 SDK + QnA Maker / LUIS
Bot Builder V4 SDK  + QnA Maker / LUISBot Builder V4 SDK  + QnA Maker / LUIS
Bot Builder V4 SDK + QnA Maker / LUIS
Yoshitaka Seo
 
Metahub for github
Metahub for githubMetahub for github
Metahub for github
Suguru Oho
 
Shizudev git hub宿題
Shizudev git hub宿題Shizudev git hub宿題
Shizudev git hub宿題
Tadahiro Ishisaka
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
 
Gatsby & React Static
Gatsby & React StaticGatsby & React Static
Gatsby & React Static
Kazuhiro Hara
 
WindowsでGitを使う際のベストプラクティス
WindowsでGitを使う際のベストプラクティスWindowsでGitを使う際のベストプラクティス
WindowsでGitを使う際のベストプラクティス
Ryo Sumasu
 
Microsoft Graph API Library for Go
Microsoft Graph API Library for GoMicrosoft Graph API Library for Go
Microsoft Graph API Library for Go
yaegashi
 
GoBGP活用によるSD-WANプラクティス
GoBGP活用によるSD-WANプラクティスGoBGP活用によるSD-WANプラクティス
GoBGP活用によるSD-WANプラクティス
Toshiki Tsuboi
 
GPS×Twitter4Rでたのしい位置情報ライフ
GPS×Twitter4Rでたのしい位置情報ライフGPS×Twitter4Rでたのしい位置情報ライフ
GPS×Twitter4Rでたのしい位置情報ライフ
Masahiro Kawato
 
20200504 raspberrypi handson_honpen
20200504 raspberrypi handson_honpen20200504 raspberrypi handson_honpen
20200504 raspberrypi handson_honpen
Ayachika Kitazaki
 
筋肉によるGoコードジェネレーション
筋肉によるGoコードジェネレーション筋肉によるGoコードジェネレーション
筋肉によるGoコードジェネレーション
lestrrat
 
2013.01.18 G*Workshop GGX 2012 Report
2013.01.18 G*Workshop GGX 2012 Report2013.01.18 G*Workshop GGX 2012 Report
2013.01.18 G*Workshop GGX 2012 Report
Yu Sudo
 
OpenGLプログラミング
OpenGLプログラミングOpenGLプログラミング
OpenGLプログラミング
幸雄 村上
 
Geo x html5 on MapsAPI three minutes cooking
Geo x html5 on MapsAPI three minutes cooking Geo x html5 on MapsAPI three minutes cooking
Geo x html5 on MapsAPI three minutes cooking
Kentaro Ishimaru
 
Mattermost Plugin Bounty Programについて
Mattermost Plugin Bounty ProgramについてMattermost Plugin Bounty Programについて
Mattermost Plugin Bounty Programについて
Nemoto Yusuke
 
GitHub Copilotとともに次の開発体験へ
GitHub Copilotとともに次の開発体験へGitHub Copilotとともに次の開発体験へ
GitHub Copilotとともに次の開発体験へ
Kazumi OHIRA
 
Iotlt 28 HoloLensに日本語聞いてもらいたい
Iotlt 28 HoloLensに日本語聞いてもらいたいIotlt 28 HoloLensに日本語聞いてもらいたい
Iotlt 28 HoloLensに日本語聞いてもらいたい
Masaki Yamamoto
 
20111203 gdd2011フィードバック 公開用
20111203 gdd2011フィードバック 公開用20111203 gdd2011フィードバック 公開用
20111203 gdd2011フィードバック 公開用
tksyokoyama
 
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウCircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
Takeshi Mikami
 
GoでEPC作って本番運用している話
GoでEPC作って本番運用している話GoでEPC作って本番運用している話
GoでEPC作って本番運用している話
雄也 日下部
 
Bot Builder V4 SDK + QnA Maker / LUIS
Bot Builder V4 SDK  + QnA Maker / LUISBot Builder V4 SDK  + QnA Maker / LUIS
Bot Builder V4 SDK + QnA Maker / LUIS
Yoshitaka Seo
 
Metahub for github
Metahub for githubMetahub for github
Metahub for github
Suguru Oho
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
 
Gatsby & React Static
Gatsby & React StaticGatsby & React Static
Gatsby & React Static
Kazuhiro Hara
 
WindowsでGitを使う際のベストプラクティス
WindowsでGitを使う際のベストプラクティスWindowsでGitを使う際のベストプラクティス
WindowsでGitを使う際のベストプラクティス
Ryo Sumasu
 
Microsoft Graph API Library for Go
Microsoft Graph API Library for GoMicrosoft Graph API Library for Go
Microsoft Graph API Library for Go
yaegashi
 
GoBGP活用によるSD-WANプラクティス
GoBGP活用によるSD-WANプラクティスGoBGP活用によるSD-WANプラクティス
GoBGP活用によるSD-WANプラクティス
Toshiki Tsuboi
 
GPS×Twitter4Rでたのしい位置情報ライフ
GPS×Twitter4Rでたのしい位置情報ライフGPS×Twitter4Rでたのしい位置情報ライフ
GPS×Twitter4Rでたのしい位置情報ライフ
Masahiro Kawato
 
20200504 raspberrypi handson_honpen
20200504 raspberrypi handson_honpen20200504 raspberrypi handson_honpen
20200504 raspberrypi handson_honpen
Ayachika Kitazaki
 
筋肉によるGoコードジェネレーション
筋肉によるGoコードジェネレーション筋肉によるGoコードジェネレーション
筋肉によるGoコードジェネレーション
lestrrat
 
2013.01.18 G*Workshop GGX 2012 Report
2013.01.18 G*Workshop GGX 2012 Report2013.01.18 G*Workshop GGX 2012 Report
2013.01.18 G*Workshop GGX 2012 Report
Yu Sudo
 
OpenGLプログラミング
OpenGLプログラミングOpenGLプログラミング
OpenGLプログラミング
幸雄 村上
 
Geo x html5 on MapsAPI three minutes cooking
Geo x html5 on MapsAPI three minutes cooking Geo x html5 on MapsAPI three minutes cooking
Geo x html5 on MapsAPI three minutes cooking
Kentaro Ishimaru
 
Mattermost Plugin Bounty Programについて
Mattermost Plugin Bounty ProgramについてMattermost Plugin Bounty Programについて
Mattermost Plugin Bounty Programについて
Nemoto Yusuke
 
GitHub Copilotとともに次の開発体験へ
GitHub Copilotとともに次の開発体験へGitHub Copilotとともに次の開発体験へ
GitHub Copilotとともに次の開発体験へ
Kazumi OHIRA
 
Iotlt 28 HoloLensに日本語聞いてもらいたい
Iotlt 28 HoloLensに日本語聞いてもらいたいIotlt 28 HoloLensに日本語聞いてもらいたい
Iotlt 28 HoloLensに日本語聞いてもらいたい
Masaki Yamamoto
 
20111203 gdd2011フィードバック 公開用
20111203 gdd2011フィードバック 公開用20111203 gdd2011フィードバック 公開用
20111203 gdd2011フィードバック 公開用
tksyokoyama
 
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウCircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
Takeshi Mikami
 

More from Naoki Watanabe (13)

Deep learning basics described
Deep learning basics describedDeep learning basics described
Deep learning basics described
Naoki Watanabe
 
shuumai deep learning
shuumai deep learning shuumai deep learning
shuumai deep learning
Naoki Watanabe
 
アントレプレナーシップ論講座の卒業生による話(2019/04/20)
アントレプレナーシップ論講座の卒業生による話(2019/04/20)アントレプレナーシップ論講座の卒業生による話(2019/04/20)
アントレプレナーシップ論講座の卒業生による話(2019/04/20)
Naoki Watanabe
 
Basic explanation of Generative adversarial networks on MNIST
Basic explanation of Generative adversarial networks on MNISTBasic explanation of Generative adversarial networks on MNIST
Basic explanation of Generative adversarial networks on MNIST
Naoki Watanabe
 
Lecuture on Deep Learning API
Lecuture on Deep Learning APILecuture on Deep Learning API
Lecuture on Deep Learning API
Naoki Watanabe
 
tinder automation
tinder automationtinder automation
tinder automation
Naoki Watanabe
 
Programming Lecture 2nd - Flask and Heroku in Python -
Programming Lecture 2nd - Flask and Heroku in Python -Programming Lecture 2nd - Flask and Heroku in Python -
Programming Lecture 2nd - Flask and Heroku in Python -
Naoki Watanabe
 
Programming Lecture 1st
Programming Lecture 1stProgramming Lecture 1st
Programming Lecture 1st
Naoki Watanabe
 
Lecture for Bootstrap and flask in Python
Lecture for Bootstrap and flask in PythonLecture for Bootstrap and flask in Python
Lecture for Bootstrap and flask in Python
Naoki Watanabe
 
Mcluhan’s medium
Mcluhan’s mediumMcluhan’s medium
Mcluhan’s medium
Naoki Watanabe
 
Bitcoin4beginners
Bitcoin4beginnersBitcoin4beginners
Bitcoin4beginners
Naoki Watanabe
 
物理はどこで発見されるか
物理はどこで発見されるか物理はどこで発見されるか
物理はどこで発見されるか
Naoki Watanabe
 
ちょうかんたんワインこうざ
ちょうかんたんワインこうざちょうかんたんワインこうざ
ちょうかんたんワインこうざ
Naoki Watanabe
 
Deep learning basics described
Deep learning basics describedDeep learning basics described
Deep learning basics described
Naoki Watanabe
 
shuumai deep learning
shuumai deep learning shuumai deep learning
shuumai deep learning
Naoki Watanabe
 
アントレプレナーシップ論講座の卒業生による話(2019/04/20)
アントレプレナーシップ論講座の卒業生による話(2019/04/20)アントレプレナーシップ論講座の卒業生による話(2019/04/20)
アントレプレナーシップ論講座の卒業生による話(2019/04/20)
Naoki Watanabe
 
Basic explanation of Generative adversarial networks on MNIST
Basic explanation of Generative adversarial networks on MNISTBasic explanation of Generative adversarial networks on MNIST
Basic explanation of Generative adversarial networks on MNIST
Naoki Watanabe
 
Lecuture on Deep Learning API
Lecuture on Deep Learning APILecuture on Deep Learning API
Lecuture on Deep Learning API
Naoki Watanabe
 
Programming Lecture 2nd - Flask and Heroku in Python -
Programming Lecture 2nd - Flask and Heroku in Python -Programming Lecture 2nd - Flask and Heroku in Python -
Programming Lecture 2nd - Flask and Heroku in Python -
Naoki Watanabe
 
Programming Lecture 1st
Programming Lecture 1stProgramming Lecture 1st
Programming Lecture 1st
Naoki Watanabe
 
Lecture for Bootstrap and flask in Python
Lecture for Bootstrap and flask in PythonLecture for Bootstrap and flask in Python
Lecture for Bootstrap and flask in Python
Naoki Watanabe
 
物理はどこで発見されるか
物理はどこで発見されるか物理はどこで発見されるか
物理はどこで発見されるか
Naoki Watanabe
 
ちょうかんたんワインこうざ
ちょうかんたんワインこうざちょうかんたんワインこうざ
ちょうかんたんワインこうざ
Naoki Watanabe
 
Ad

Create line bot with Google Apps Script