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
モダンGASプログラミング
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
jalemy
July 31, 2019
Programming
1.3k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
モダンGASプログラミング
jalemy
July 31, 2019
Transcript
34 slides
モダンGASプログラミング ゆるはち.it 2019/07/31 @jalemy
自己紹介 • 名前:佐野友亮(@jalemy) ◦ じゃれみーって呼んでください • Unityでクライアントエンジニア3年くらい ◦ モバイル向けゲームの開発 /運用
• 今年6月からWebエンジニア ◦ Laravel + Vue.js
スプレッドシート使ってますか?
GAS書いてますか?
GASとは • Google Apps Script • Googleが提供するサーバサイド・スクリプト環境 • ベースはJavaScript ◦
JavaScriptに慣れ親しんでいればサクサク書ける • スプレッドシートなどのGoogleサービスと連携が楽
GASの活用事例
Googleフォームを月初に自動で作成したり
Googleカレンダーを自動で作成したり
スプレッドシートと連携したり
• Webページのスクレイピング • (簡単な)Webアプリケーション • データ集計 • Web API •
etc………… (やろうと思えば)なんでもできる! ……❓ GASの活用事例
GASの長所・短所
長所♂ • サーバ管理不要 • 学習コストが低め • 各種Googleサービスと連携しやすい ◦ インタフェース開発コストの削減 •
権限管理を全てGoogleに任せられる
短所♂ • 複数人開発がし難い ◦ 属人化したコードが生まれる • 処理時間の壁(6分間の壁) • インタフェースと密になりがち ◦
利用者がシートをいじってしまって動かないなど……
GAS+スプレッドシート でHello Worldデモ
• スプレッドシートに紐づいたスクリプトが生まれる ◦ 実態はGoogle Driveに存在している • 自分の好きなエディタを使いたい • バージョン管理したい ◦
一応できるにはできるが使いづらい ……
claspを利用しよう✍
claspとは • Google謹製のCLIツール ◦ https://github.com/google/clasp • npmでインストールできる ◦ `npm install
@google/clasp -g` • GASプロジェクトの新規作成、アップロード /ダウンロード バージョン管理、デプロイ、エディタで開く といったことができる
clasp利用デモ
claspの弱点 • pushしないとデバッグし難い ◦ しかし、pushしたら本番環境(?)が変更されてしまう ◦ 複数人開発するとなると致命的 デバッグするときは”.clasp.json”をいじって、環境を差し替える ”clasp run”を利用して、ローカルでテストする
.clasp.json • 中身はこんな感じ • “scriptId”を変更すれば、 push先を変更できる
clasp run • GCPで認証情報を作成する • クライアントIDなどの情報が詰まった “jsonファイル” をダウンロード • “jsonファイル”
を “creds.json” とリネームし、プロジェクト直下に配置 • clasp login –creds creds.jsonとコマンドを入力し、認証作業を進める • clasp run で関数を選んで実行 手順が長いのでこのあたりを参考にしてください https://officeforest.org/wp/2019/04/07/google-apps-script%E3%82%92%E3%83%AD%E3%83%BC%E3% 82%AB%E3%83%ABpc%E3%81%A7%E9%96%8B%E7%99%BA%E3%81%99%E3%82%8B%E6%96% B9%E6%B3%95/
デモ
気づいた方もいるかも……
clasp Code.gs Code.js .gsから.jsにトランスパイルされている (その逆も)
TypeScriptデモ
GASでWebスクレイピング
GASでWebスクレイピング 基本的にはこれだけ 1. UrlFetchApp.fetch(uri, params)を利用して、レスポンスを取得 2. getContentText(charset)で、contentだけ抜き出し 3. HTMLタグなどを利用して、欲しいデータを抽出
• https://github.com/jalemy/connpass-gas connpassのgroup_idを指定して、 イベントページから参加者のみリストアップする (突貫工事のためコードが汚いですが、ご了承 ください)
動作確認デモ
• Web上で公開されているライブラリを利用することができる • appsscript.jsonで管理される • GUIでは、リソース > ライブラリ で追加できる ライブラリ
https://www.kutil.org/2016/01/easy-data-scrapping-with-google-apps.html appsscript.json
トリガー • 編集 > 現在のプロジェクトのトリガー から、 トリガーを設定できる • 毎週日曜日の12時に実行など設定できる •
自動化しやすい
まとめ • claspを利用すればGASをgit管理できる • 外部ライブラリや、GASのpush先もコード化される • (ちょっと面倒だけど)ローカルでのテストも可能 • GASでトリガーを設定できるので、自動化便利 GASでモダンっぽくプログラミングしましょう
ご静聴ありがとうございました
More Decks by jalemy
See All by jalemy
AWS LightsailでHTTPS対応WordPress構築 & ShifterでサーバーレスWordPress
jalemy
0
450
Flutterレイアウト入門
jalemy
0
280
Other Decks in Programming
See All in Programming
ActionController meets Protocol Buffers
sorah
1
800
Python Lambdaにおけるテストしやすい設計とAI支援の活用 / Designing Testable Python Lambda Functions with AI
kitano_yuichi
1
320
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
4
3.8k
flutter_test のその先へ — Flutter アプリの LLM 機能に「評価」という品質保証を
kosukesaigusa
0
200
[DroidKnights 2026] Workflow AX: From Auto-Documented Policies to E2E Testing
raeminkang
0
560
protojson における文字化けの扱い
kazuki1023
0
390
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
380
Vue.jsで作る空間解析アプリとCapacitorプラグインのData Bridge
hal_spidernight
1
170
複数ドメインを一つのアプリに統合するFlutterの設計と運用_FlutterKaigi2026登壇資料(須永高弘)
takahirosunaga
0
180
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
1
2k
React Native에 현대적인 빌드 도구 더하기: Rollipop 구현기
leegeunhyeok
0
180
作れるエンジニアから、価値を届けるエンジニアへ
ryunakayama
1
270
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
77
5.6k
Color Theory Basics | Prateek | Gurzu
gurzu
1
520
A Modern Web Designer's Workflow
chriscoyier
699
190k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Heart Work Chapter 1 - Part 1
lfama
PRO
11
37k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
The World Runs on Bad Software
bkeepers
PRO
72
12k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Navigating Weather and Climate Data
rabernat
0
590
Fantastic passwords and where to find them - at NoRuKo
philnash
53
4k
GraphQLとの向き合い方2022年版
quramy
50
15k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
470