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
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
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
カツオ、ご期待ください
suneo3476
0
160
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
200
Embedded Swiftで作る自作USBデバイス によるiOSデバイスの自動テスト / iOSDC Japan 2026 glassfiber
glassfiber
0
320
Simple Storage Service(S3) is not simple
iwatsukayura
0
240
すこし踏み込む CancellationToken
htkym
2
1.7k
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.8k
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
370
AWSに止められる覚悟してますか?
morizo_1984
2
520
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
160
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
100
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
350
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
200
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
96
14k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
How Software Deployment tools have changed in the past 20 years
geshan
2
35k
My Coaching Mixtape
mlcsv
0
340
Code Reviewing Like a Champion
maltzj
529
40k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
WENDY [Excerpt]
tessaabrams
14
40k
Embracing the Ebb and Flow
colly
88
5.2k
Prompt Engineering for Job Search
mfonobong
0
500
Designing for humans not robots
tammielis
254
26k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Transcript
モダン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でモダンっぽくプログラミングしましょう
ご静聴ありがとうございました