SlideShare a Scribd company logo
1 of 50
GASとGAE
〜その他GAEをだらだらと〜
お前、誰よ
何やってる?
http://www.kabuku.co.jp
アジェンダ
1. 今日のゴール
2. 私とGAEとGAS
3. GASとは
4. GAEとGASの連携
5. 別の連携
6. 時間があったらオレオレGAEのTips
今日のゴール
• GASを知らない人
– GASをとりあえず知る
– 帰ったら触る
• GAEを知らない人
– GASをとりあえず知る
– 帰ったら触る
• どっちも知ってる人
– 連携する利点を知る
• もう連携してる人
– 違う解を知る
ゴール 私と GAS 連携 別 その他
私と
GASと
GAE
私とGAE
• GAEとは2009年07月ゴロから
–GAE/Pが2008年4月(preview)
–GAE/Jが2009年4月
• 言語とフレームワークとなんか色々
– Java -> サーバ構築 -> テスター & VBA -> C(CGI) -> SAStruts+Maven+Jenkins -> GAE ->
GWT + JS -> slim3 -> GAS(expert) -> Android -> CoffeeScript+Grunt -> AngularJS -> 営業
-> AWS+chef+Ansible -> Go -> TypeScript+CircleCI+Docker ->
GCP + Docker -> Python
※プロジェクトじゃなくてマジで触ってたもの限定
ゴール 私と GAS 連携 別 その他
つまり
雑食
私とGAS
• GASとは2010年12月ゴロから
– GASは2009年8月
– 一応2014年からGDE
– 正直最近GASよりもGCPのほうが(ゲフンゲフン
• 2013年10月ぐらいからExpert
• 幾つかのライブラリーを出してる
ゴール 私と GAS 連携 別 その他
GASとは?
GAS
• Google Apps Script
–通称GAS、ガス、ギャス
–海外圏ではApps Script
• Googleが提供する
– サーバサイドスクリプト実行環境 & 開発ツール
• 2009年発
• 開発言語:JavaScript
ゴール 私と GAS 連携 別 その他
使
い
所
GASの使い所
• 小さいタスクの自動化
–定期レポート
–マスターデータメンテ
• DBは触れないユーザでもSpreadsheetsはされる
• Spreadsheetsのほうで集計して別の場所に入れる
–小さい運用フロー
• 管理画面作るほどじゃないけど…
• 軽いノリでなんかを作る
ゴール 私と GAS 連携 別 その他
特
徴
GASの特徴
• 簡単
–3行でメール送信
–数行でGoogleサービス連携
ゴール 私と GAS 連携 別 その他
function myFunction() {
MailApp.sendEmail("gcpug@example.com", "テストタイトル", "本文");
}
function myFunction() {
var data = SpreadsheetApp.openById(id).getSheetByName("顧客名簿
").getRange("A2:D2").getValues()[0];
var email = data[0];
var name = data[1];
var subject = data[2];
var body = data[3];
MailApp.sendEmail(email, subject, body.replace(/name/mg, name));
}
GASの特徴
• 開発環境不要
–すべてブラウザ上で開発可能
• https://script.google.com
ゴール 私と GAS 連携 別 その他
GASの特徴
• 無料
–まじで無料
–メール送信数など一部制限あり
–逆に金で解決は無理
ゴール 私と GAS 連携 別 その他
GASの特徴
• 実行スピードは速くない
–書き方によってかなり変わる
• 70倍以上違う時もある
• 最近は開発環境側で指摘してくれる
–最大6分しか動かない
–普通のJSのスピード間隔じゃないほうが良い
ゴール 私と GAS 連携 別 その他
GASの特徴
• 自動化
– 時間指定やイベントドリブンで動かせる
• 時間指定
• 定期実行
– 分毎、日毎、週毎(曜日指定)、月毎
• Spread Sheetsの表示/更新
• Google Formに回答
• Google Sitesのリンク
• Google Docsを表示
• メニューからクリック
– UIも持てる
ゴール 私と GAS 連携 別 その他
デ
モ
GASとGAE
連携
連携
• GASとGAEは幾つかの方法で連携できる
–1
–2
–3
–4
ゴール 私と GAS 連携 別 その他
HTTPS ( &OAuth2)
HTTPS
Execution API
Log Subscribe
HTTPS
( &OAuth2)
• GASからGAE
–UrlFetchApp を利用してHTTP経由で送る
–GASからGAEは基本この方法だけ
ゴール 私と GAS 連携 別 その他HTTPS ( &OAuth2)
function myFunction() {
UrlFetchApp.fetch("https://app-id.appspot.com", {
method: "POST",
contentType: "application/json",
payload: {
"key": "value"
}
});
}
• GASからGAE
–認証する場合はOAuth Tokenをつける
–GAEはoauthモジュールで認証
• Application(GAS側)を限定するならclient-idで絞
る
ゴール 私と GAS 連携 別 その他HTTPS ( &OAuth2)
• GASからGAE with OAuth2
– GAS側コード
– Session.getActiveUser()でoauth scopeを設定
– ScriptApp.getOAuthToken()でtoken取得
ゴール 私と GAS 連携 別 その他HTTPS ( &OAuth2)
• GASからGAE with OAuth2
– GAE側コード
– OAuth2認証を使う
ゴール 私と GAS 連携 別 その他HTTPS ( &OAuth2)
HTTPS
• GAEからGAS 1
–GAS側にHTTPで呼び出す口を作る
ゴール 私と GAS 連携 別 その他HTTPS
• GAEからGAS 1
– GAE側からurlfetchで呼びだす
– 認証は…(ゲフンゲフン
• 方法がないので基本secret keyでやる
•
ゴール 私と GAS 連携 別 その他HTTPS
• GAEからGAS 1
– 認証
• 厳密にはGAS->GAE同様の方法もある
GAS側
•
ゴール 私と GAS 連携 別 その他HTTPS
• GAEからGAS 1
– 認証
• 厳密にはGAS->GAE同様の方法もある
GAE側
•
ゴール 私と GAS 連携 別 その他HTTPS
Execution
API
• GAEからGAS
–GASのExecution APIを利用する
• 資料作るのがアレだったので昔のBlogを…
– http://qiita.com/soundTricker/items/1bcfc5c9e80d29a7
ae4b
• Execution APIではService Accountが使えないの
で結構めんどいかも
ゴール 私と GAS 連携 別 その他Execution
API
• GAE Pub/Sub GAS
–単純にGAEの何かしらをふっくしてGASで
処理したいのであれば Pub/Subを使うパター
ンも有る
–GAE -> (Log) -> Cloud Logging -> Pub/Sub -
> GASのパターン
–適用例
• BigQueryにデータ突っ込む
• エラーログをSlackに流す
ゴール 私と GAS 連携 別 その他
• GAE Pub/Sub GAS
–http://qiita.com/soundTricker/items/a9569b5e
d71d15429444
ゴール 私と GAS 連携 別 その他
別連携
別の方法
• 直接APIコール
– ぶっちゃけ普通にAPIコールをすればよい
• そのほうが後々汎用性高いよ
• Datastore弄りたいなら
– GASからCloud Datastore API 呼べるよ
• Cloud Functions
– 最後の例はCloud Functionsで置き換えられるよ
– GAE -> (Log) -> Cloud Logging -> Pub/Sub -> Cloud
Functions のパターン
– めんどくさいから実際に動いてるコード見せるお
ゴール 私と GAS 連携 別 その他
その他
その他
• app_identify
– appengineでappengine周りの情報を取るモジュール
– access_tokenを取得できる 素敵
• google.appengine.ext.admin.application
– ローカルで動いているadmin画面が本番でも使える
– Pyhtonだとinteractiveコンソールが使える マジ素敵
• Cloud Playground
– appengine(python)用のweb playground
– あれどうだったけをちょろく試すのに便利
– https://cloud-playground.appspot.com/playground/
ゴール 私と GAS 連携 別 その他
We are hiring
人材募集中フロントエンド http://www.kabuku.co.jp/jobs/front-end-developer
バックエンド http://www.kabuku.co.jp/jobs/backend-developer
C/C++プログラマ http://www.kabuku.co.jp/jobs/cg-cad-programmer
※ 3Dプリンター/フィラメント使いたい放題の福利厚生付き

More Related Content

More from 啓介 大橋

App Dojo 2017 12月 - VUI in your app with Dialogflow -
App Dojo 2017 12月 - VUI in your app with Dialogflow -App Dojo 2017 12月 - VUI in your app with Dialogflow -
App Dojo 2017 12月 - VUI in your app with Dialogflow -啓介 大橋
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
Dockerハンズオン啓介 大橋
 
Fusion360 meetup vol2 LT
Fusion360 meetup vol2 LTFusion360 meetup vol2 LT
Fusion360 meetup vol2 LT啓介 大橋
 
パフォーマンスの良いGASの書き方 Best Practice
パフォーマンスの良いGASの書き方 Best Practiceパフォーマンスの良いGASの書き方 Best Practice
パフォーマンスの良いGASの書き方 Best Practice啓介 大橋
 
Google Apps Scriptとは? Add-onとは?
Google Apps Scriptとは? Add-onとは?Google Apps Scriptとは? Add-onとは?
Google Apps Scriptとは? Add-onとは?啓介 大橋
 
gcp ja night #27 Google Cloud Endpoints with Golang
gcp ja night #27 Google Cloud Endpoints with Golanggcp ja night #27 Google Cloud Endpoints with Golang
gcp ja night #27 Google Cloud Endpoints with Golang啓介 大橋
 
Tokyo gas #5_whatsnewinappsscript_公開用
Tokyo gas #5_whatsnewinappsscript_公開用Tokyo gas #5_whatsnewinappsscript_公開用
Tokyo gas #5_whatsnewinappsscript_公開用啓介 大橋
 
Dart flightschool cloudendpoint with dart
Dart flightschool cloudendpoint with dartDart flightschool cloudendpoint with dart
Dart flightschool cloudendpoint with dart啓介 大橋
 

More from 啓介 大橋 (8)

App Dojo 2017 12月 - VUI in your app with Dialogflow -
App Dojo 2017 12月 - VUI in your app with Dialogflow -App Dojo 2017 12月 - VUI in your app with Dialogflow -
App Dojo 2017 12月 - VUI in your app with Dialogflow -
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
Dockerハンズオン
 
Fusion360 meetup vol2 LT
Fusion360 meetup vol2 LTFusion360 meetup vol2 LT
Fusion360 meetup vol2 LT
 
パフォーマンスの良いGASの書き方 Best Practice
パフォーマンスの良いGASの書き方 Best Practiceパフォーマンスの良いGASの書き方 Best Practice
パフォーマンスの良いGASの書き方 Best Practice
 
Google Apps Scriptとは? Add-onとは?
Google Apps Scriptとは? Add-onとは?Google Apps Scriptとは? Add-onとは?
Google Apps Scriptとは? Add-onとは?
 
gcp ja night #27 Google Cloud Endpoints with Golang
gcp ja night #27 Google Cloud Endpoints with Golanggcp ja night #27 Google Cloud Endpoints with Golang
gcp ja night #27 Google Cloud Endpoints with Golang
 
Tokyo gas #5_whatsnewinappsscript_公開用
Tokyo gas #5_whatsnewinappsscript_公開用Tokyo gas #5_whatsnewinappsscript_公開用
Tokyo gas #5_whatsnewinappsscript_公開用
 
Dart flightschool cloudendpoint with dart
Dart flightschool cloudendpoint with dartDart flightschool cloudendpoint with dart
Dart flightschool cloudendpoint with dart
 

GCPUG Shonan GAS & GAE