豚吐露@wiki

1110_GAS入門2020

最終更新:

ohden

- view
管理者のみ編集可

Google Apps Script 入門 2020/田邉裕貴

2020-10-18(日) 11:10~11:40


G Suite→Google workspace

1.GAS概要

  • Google Apps拡張、連携ができる

  • JavaScriptで記述できる
 v8に2020/02に対応
 →モダンなJavaScriptが使えるようになった
 →アロー関数、const、letなどサポート

  • 無料
 無料制限を超えるとscript自体が止まる
 利用制限はある:実行時間、カレンダーイベント作成回数、トリガーの数、外部API呼び出し回数など
 https://developers.google.com/apps-script/guides/services/quotas

  • 実行時認証のため、認証部分のコーディング不要


2.GASでできること

  • Appsのカスタマイズ、拡張
 カスタムメニュー
 →Docs、Sheets、Slides、Formsでカスタムメニューを追加し、選択時にGASを呼び出せる
  https://developers.google.com/apps-script/guides/menus
 ダイアログ
 →アラート、プロンプト、カスタム(HTMLでUI作成)
  https://developers.google.com/apps-script/guides/dialogs
 サイドバー
 →HTMLでUI作成
  https://developers.google.com/apps-script/guides/dialogs#custom_sidebars
 アドオン
 →editorアドオン、Workspaceアドオン→Workspace Marketplaceに公開可能
  https://developers.google.com/gsuite/add-ons/overview
  https://gsuite.google.com/marketplace/
 スプレッドシートのカスタム関数
  https://developers.google.com/apps-script/guides/sheets/functions

  • Apps間の連携
 スプレッドシートで管理されたイベントをカレンダーに登録
 カレンダーの予定をスプレッドシートに取り込む
 スプレッドシートのmailaddress一覧宛にメール送信
 gmailのmail一覧をスプレッドシートに取り込む
 Formの投稿をgmailで通知
 などなど

  • 外部API呼び出し
 Slack、Twitterなど
  https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#fetchurl,-params
 Appsと外部サービスの連携
 →外部サービスAPIからスプレッドシートに情報取り込み、Data Studioでダッシュボード作成
 →Formの投稿をSlackに通知
 →などなど
  https://medium.com/google-cloud-jp/9aa831c1bf0e

  • Googleのその他のサービスとの連携
 Google翻訳、Analytics、BigQuery、YouTube、etc..
 APIラッパーが用意されている
 https://developers.google.com/apps-script/guides/services/advanced

  • 定期実行
 トリガ機能の一つ
 cronと同じような感じ
 →分、時、日、週、月
  →毎週X曜日のY時に実行

  • Web公開
 APIやWebサイトの公開が可能
 doGet、doPost関数の実装でHTTPのGET、POSTリクエストに対応可能
 workspaceメンバのみに公開ができるので社内向けサイトを容易に構築できる
 https://developers.google.com/apps-script/guides/web

3.GASを習得するまで
 JavaScriptを覚える
  https://prog-8.com/languages/es6
  https://www.codecademy.com/learn/introduction-to-javascript
  https://dotinstall.com/lessons/basic_javascript_v4
 debug法を覚える
 →debugger
 →console.log
 公式ドキュメント
  https://developers.google.com/apps-script/articles/tutorials
  https://developers.google.com/gsuite/solutions
  https://developers.google.com/gsuite/add-ons/samples
  https://github.com/googleworkspace/apps-script-samples
  https://github.com/googleworkspace/add-ons-samples
 Codelabs
  https://codelabs.developers.google.com/?cat=G Suite
  https://tanabee.github.io/gas-codelab/ja/#0
 GASで使うスニペット集
  https://qiita.com/tanabee/items/5de3e8715be759ce1c7f
 clasp:ローカル環境で開発したcodeをdeployできる
 →GAS版git
  →clasp clone [ScriptID]
  →clasp push
  →clasp pull

4.アンチパターン
重い処理を大量コールしてる
→実行時間制限で途中で処理が終わる可能性がある。
 →時間のかかる処理を繰り返させるのではなく、重い処理は一度にまとめて行うような書き方が推奨される

制限事項を考慮しない設計
e.g.)1日にmailのread/writeは20000件、新規スプレッドシートの数は250件、GAS実行時間は90分。
→実行時間が1分のGASを繰り返し実行する場合は、1日に90回の実行回数を超えないように、トリガを設定する。
 →15分に1回実行だと、実行に96分必要になるので、6回分実行できなくなる。
→処理時間とトリガに設定する頻度を考慮しないと、利用制限の枠に収まらないで途中から実行されないようになる

何でもGASにやらせるのはNG
→メリット・デメリットの理解。他の選択肢も要検討
 →Appsに無関係の処理
 →npmモジュール使いたい
 →API呼び出し制限回数気にせずに作りたい


更新日: 2020年10月31日 (土) 16時27分36秒

名前:
コメント:

すべてのコメントを見る
記事メニュー
目安箱バナー