Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
モダン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
430
Flutterレイアウト入門
jalemy
0
270
Other Decks in Programming
See All in Programming
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
510
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.2k
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
4.7k
さぁV100、メモリをお食べ・・・
nilpe
0
130
Oxlintのカスタムルールの現況
syumai
6
1k
Lessons from Spec-Driven Development
simas
PRO
0
150
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
110
JavaDoc 再入門
nagise
0
300
「エンジニアインターン、どうやって取った?」準備のリアルを語るLT会 Progate BAR
akiomatic
0
120
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
370
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
310
AIとASP.NET Coreで雑Webアプリを作った話
mayuki
0
420
Featured
See All Featured
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
140
Amusing Abliteration
ianozsvald
1
200
Accessibility Awareness
sabderemane
1
130
How to Ace a Technical Interview
jacobian
281
24k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
Prompt Engineering for Job Search
mfonobong
0
330
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
A Modern Web Designer's Workflow
chriscoyier
698
190k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
How GitHub (no longer) Works
holman
316
150k
Discover your Explorer Soul
emna__ayadi
2
1.1k
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でモダンっぽくプログラミングしましょう
ご静聴ありがとうございました