モダンGASプログラミング

E976fa2ecdb59d24be374c953fe56e2f?s=47 jalemy
July 31, 2019

 モダンGASプログラミング

E976fa2ecdb59d24be374c953fe56e2f?s=128

jalemy

July 31, 2019
Tweet

Transcript

  1. モダンGASプログラミング ゆるはち.it 2019/07/31 @jalemy

  2. 自己紹介 • 名前:佐野友亮(@jalemy) ◦ じゃれみーって呼んでください • Unityでクライアントエンジニア3年くらい ◦ モバイル向けゲームの開発 /運用

    • 今年6月からWebエンジニア ◦ Laravel + Vue.js
  3. スプレッドシート使ってますか?

  4. GAS書いてますか?

  5. GASとは • Google Apps Script • Googleが提供するサーバサイド・スクリプト環境 • ベースはJavaScript ◦

    JavaScriptに慣れ親しんでいればサクサク書ける • スプレッドシートなどのGoogleサービスと連携が楽
  6. GASの活用事例

  7. Googleフォームを月初に自動で作成したり

  8. Googleカレンダーを自動で作成したり

  9. スプレッドシートと連携したり

  10. • Webページのスクレイピング • (簡単な)Webアプリケーション • データ集計 • Web API •

    etc…………          (やろうと思えば)なんでもできる!   ……❓ GASの活用事例
  11. GASの長所・短所

  12. 長所‍♂ • サーバ管理不要 • 学習コストが低め • 各種Googleサービスと連携しやすい ◦ インタフェース開発コストの削減 •

    権限管理を全てGoogleに任せられる
  13. 短所‍♂ • 複数人開発がし難い ◦ 属人化したコードが生まれる • 処理時間の壁(6分間の壁) • インタフェースと密になりがち ◦

    利用者がシートをいじってしまって動かないなど……
  14. GAS+スプレッドシート    でHello Worldデモ

  15. • スプレッドシートに紐づいたスクリプトが生まれる ◦ 実態はGoogle Driveに存在している • 自分の好きなエディタを使いたい • バージョン管理したい ◦

    一応できるにはできるが使いづらい ……
  16. claspを利用しよう✍

  17. claspとは • Google謹製のCLIツール ◦ https://github.com/google/clasp • npmでインストールできる ◦ `npm install

    @google/clasp -g` • GASプロジェクトの新規作成、アップロード /ダウンロード バージョン管理、デプロイ、エディタで開く といったことができる
  18. clasp利用デモ

  19. claspの弱点 • pushしないとデバッグし難い ◦ しかし、pushしたら本番環境(?)が変更されてしまう ◦ 複数人開発するとなると致命的 デバッグするときは”.clasp.json”をいじって、環境を差し替える ”clasp run”を利用して、ローカルでテストする

  20. .clasp.json • 中身はこんな感じ • “scriptId”を変更すれば、 push先を変更できる

  21. 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/
  22. デモ

  23. 気づいた方もいるかも……

  24. clasp Code.gs Code.js .gsから.jsにトランスパイルされている (その逆も)

  25. TypeScriptデモ

  26. GASでWebスクレイピング

  27. GASでWebスクレイピング 基本的にはこれだけ 1. UrlFetchApp.fetch(uri, params)を利用して、レスポンスを取得 2. getContentText(charset)で、contentだけ抜き出し 3. HTMLタグなどを利用して、欲しいデータを抽出

  28. • https://github.com/jalemy/connpass-gas connpassのgroup_idを指定して、 イベントページから参加者のみリストアップする (突貫工事のためコードが汚いですが、ご了承 ください)

  29. 動作確認デモ

  30. • Web上で公開されているライブラリを利用することができる • appsscript.jsonで管理される • GUIでは、リソース > ライブラリ で追加できる ライブラリ

  31. https://www.kutil.org/2016/01/easy-data-scrapping-with-google-apps.html appsscript.json

  32. トリガー • 編集 > 現在のプロジェクトのトリガー から、 トリガーを設定できる • 毎週日曜日の12時に実行など設定できる •

    自動化しやすい
  33. まとめ • claspを利用すればGASをgit管理できる • 外部ライブラリや、GASのpush先もコード化される • (ちょっと面倒だけど)ローカルでのテストも可能 • GASでトリガーを設定できるので、自動化便利 GASでモダンっぽくプログラミングしましょう

  34. ご静聴ありがとうございました