50
GAS GAE とととと GAE ととととととと

GCPUG Shonan GAS & GAE

  • Upload
    -

  • View
    624

  • Download
    1

Embed Size (px)

Citation preview

Page 1: GCPUG Shonan GAS & GAE

GAS と GAE〜その他 GAEをだらだらと〜

Page 2: GCPUG Shonan GAS & GAE

お前、誰よ

Page 3: GCPUG Shonan GAS & GAE

大橋

啓介

と申し

ます

Page 4: GCPUG Shonan GAS & GAE

何やってる?

Page 5: GCPUG Shonan GAS & GAE
Page 6: GCPUG Shonan GAS & GAE

http://www.kabuku.co.jp

Page 7: GCPUG Shonan GAS & GAE
Page 8: GCPUG Shonan GAS & GAE
Page 9: GCPUG Shonan GAS & GAE

話す

Page 10: GCPUG Shonan GAS & GAE

アジェンダ

1. 今日のゴール

2. 私と GAE と GAS3. GAS とは

4. GAE と GAS の連携

5. 別の連携

6. 時間があったらオレオレ GAE の Tips

Page 11: GCPUG Shonan GAS & GAE

今日のゴール• GASを知らない人

– GAS をとりあえず知る

– 帰ったら触る

• GAEを知らない人– GAS をとりあえず知る

– 帰ったら触る

• どっちも知ってる人– 連携する利点を知る

• もう連携してる人– 違う解を知る

ゴール 私と GAS 連携 別 その他

Page 12: GCPUG Shonan GAS & GAE

私と

GAS と

GAE

Page 13: GCPUG Shonan 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 連携 別 その他

Page 14: GCPUG Shonan GAS & GAE

つまり

Page 15: GCPUG Shonan GAS & GAE

雑食

Page 16: GCPUG Shonan GAS & GAE

私と GAS• GAS とは2010 年 12 月ゴロから

– GAS は 2009 年 8 月

–一応 2014 年から GDE–正直最近 GAS よりも GCP のほうが ( ゲフンゲフン

• 2013 年 10 月ぐらいから Expert• 幾つかのライブラリーを出してる

ゴール 私と GAS 連携 別 その他

Page 17: GCPUG Shonan GAS & GAE

GAS とは ?

Page 18: GCPUG Shonan GAS & GAE
Page 19: GCPUG Shonan GAS & GAE

GAS•Google Apps Script–通称 GAS 、ガス、ギャス

–海外圏では Apps Script• Google が提供する–サーバサイドスクリプト実行環境 & 開発ツール

• 2009 年発

• 開発言語: JavaScript

ゴール 私と GAS 連携 別 その他

Page 20: GCPUG Shonan GAS & GAE

使い所

Page 21: GCPUG Shonan GAS & GAE

GAS の使い所• 小さいタスクの自動化–定期レポート

–マスターデータメンテ• DB は触れないユーザでも Spreadsheets はされる

• Spreadsheets のほうで集計して別の場所に入れる

–小さい運用フロー• 管理画面作るほどじゃないけど…

• 軽いノリでなんかを作る

ゴール 私と GAS 連携 別 その他

Page 22: GCPUG Shonan GAS & GAE

特徴

Page 23: GCPUG Shonan GAS & GAE

GAS の特徴• 簡単–3 行でメール送信

–数行で Google サービス連携

ゴール 私と GAS 連携 別 その他

function myFunction() { MailApp.sendEmail("[email protected]", "テストタイトル ", "本文 ");}

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));}

Page 24: GCPUG Shonan GAS & GAE

GAS の特徴• 開発環境不要–すべてブラウザ上で開発可能• https://script.google.com

ゴール 私と GAS 連携 別 その他

Page 25: GCPUG Shonan GAS & GAE

GAS の特徴• 無料–まじで無料

–メール送信数など一部制限あり

–逆に金で解決は無理

ゴール 私と GAS 連携 別 その他

Page 26: GCPUG Shonan GAS & GAE

GAS の特徴• 実行スピードは速くない–書き方によってかなり変わる• 70 倍以上違う時もある

• 最近は開発環境側で指摘してくれる

–最大 6 分しか動かない

–普通の JS のスピード間隔じゃないほうが良い

ゴール 私と GAS 連携 別 その他

Page 27: GCPUG Shonan GAS & GAE

GAS の特徴• 自動化–時間指定やイベントドリブンで動かせる• 時間指定

• 定期実行–分毎、日毎、週毎 ( 曜日指定 ) 、月毎

• Spread Sheets の表示 / 更新

• Google Form に回答

• Google Sites のリンク

• Google Docs を表示

• メニューからクリック

–UI も持てる

ゴール 私と GAS 連携 別 その他

Page 28: GCPUG Shonan GAS & GAE

デモ

Page 29: GCPUG Shonan GAS & GAE

GAS と GAE連携

Page 30: GCPUG Shonan GAS & GAE

連携• GAS と GAE は幾つかの方法で連携できる

–1

–2

–3

–4

ゴール 私と GAS 連携 別 その他

HTTPS ( &OAuth2)

HTTPS

Execution API

Log Subscribe

Page 31: GCPUG Shonan GAS & GAE

HTTPS ( &OAuth2)

Page 32: GCPUG Shonan GAS & GAE

• 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" } });}

Page 33: GCPUG Shonan GAS & GAE

• GAS から GAE–認証する場合は OAuth Token をつける

–GAE は oauth モジュールで認証• Application(GAS 側 ) を限定するなら client-id

で絞る

ゴール 私と GAS 連携 別 その他HTTPS ( &OAuth2)

Page 34: GCPUG Shonan GAS & GAE

• GAS から GAE with OAuth2– GAS 側コード

– Session.getActiveUser() で oauth scope を設定

– ScriptApp.getOAuthToken() で token 取得

ゴール 私と GAS 連携 別 その他HTTPS ( &OAuth2)

Page 35: GCPUG Shonan GAS & GAE

• GAS から GAE with OAuth2–GAE 側コード

–OAuth2 認証を使う

ゴール 私と GAS 連携 別 その他HTTPS ( &OAuth2)

Page 36: GCPUG Shonan GAS & GAE

HTTPS

Page 37: GCPUG Shonan GAS & GAE

• GAE から GAS 1–GAS 側に HTTP で呼び出す口を作る

ゴール 私と GAS 連携 別 その他HTTPS

Page 38: GCPUG Shonan GAS & GAE

• GAE から GAS 1–GAE 側から urlfetch で呼びだす

–認証は… ( ゲフンゲフン• 方法がないので基本 secret key でやる

ゴール 私と GAS 連携 別 その他HTTPS

Page 39: GCPUG Shonan GAS & GAE

• GAE から GAS 1–認証• 厳密には GAS->GAE 同様の方法もある

GAS 側

ゴール 私と GAS 連携 別 その他HTTPS

Page 40: GCPUG Shonan GAS & GAE

• GAE から GAS 1–認証• 厳密には GAS->GAE 同様の方法もある

GAE 側

ゴール 私と GAS 連携 別 その他HTTPS

Page 41: GCPUG Shonan GAS & GAE

Execution API

Page 42: GCPUG Shonan GAS & GAE

• GAE から GAS–GAS の Execution API を利用する• 資料作るのがアレだったので昔の Blog を…– http://qiita.com/soundTricker/items/1bcfc5c9e8

0d29a7ae4b• Execution API では Service Account が使えな

いので結構めんどいかも

ゴール 私と GAS 連携 別 その他Execution API

Page 43: GCPUG Shonan GAS & GAE
Page 44: GCPUG Shonan GAS & GAE

• GAE Pub/Sub GAS–単純に GAE の何かしらをふっくして GAS

で処理したいのであれば Pub/Sub を使うパターンも有る

–GAE -> (Log) -> Cloud Logging -> Pub/Sub -> GAS のパターン

–適用例• BigQuery にデータ突っ込む

• エラーログを Slack に流す

ゴール 私と GAS 連携 別 その他

Page 45: GCPUG Shonan GAS & GAE

• GAE Pub/Sub GAS–http://qiita.com/soundTricker/items/

a9569b5ed71d15429444

ゴール 私と GAS 連携 別 その他

Page 46: GCPUG Shonan GAS & GAE

別連携

Page 47: GCPUG Shonan GAS & GAE

別の方法• 直接API コール–ぶっちゃけ普通に API コールをすればよい

• そのほうが後々汎用性高いよ

• Datastore弄りたいなら– GAS から Cloud Datastore API 呼べるよ

• Cloud Functions– 最後の例は Cloud Functions で置き換えられるよ

– GAE -> (Log) -> Cloud Logging -> Pub/Sub -> Cloud Functions のパターン

– めんどくさいから実際に動いてるコード見せるお

ゴール 私と GAS 連携 別 その他

Page 48: GCPUG Shonan GAS & GAE

その他

Page 49: GCPUG Shonan GAS & GAE

その他• 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 連携 別 その他

Page 50: GCPUG Shonan GAS & GAE

We are hiring

人材募集中フロントエンド  http://www.kabuku.co.jp/jobs/front-end-developerバックエンド http://www.kabuku.co.jp/jobs/backend-developerC/C++ プログラマ  http://www.kabuku.co.jp/jobs/cg-cad-programmer

※ 3D プリンター / フィラメント使いたい放題の福利厚生付き