noah.plus

Google Apps Script 入門。コードを書き始める前に知りたかったことまとめ

2018-09-15

バイト先の塾ではかなり素朴な手法で名簿が作成されているので、Google App Script で自動化を目指す。(現在進行形)

以下、現在の名簿作成ワークフロー。

生徒がホームページから申し込み → 塾にメールが届く → メールの内容を名簿テンプレートに1つずつコピペ → 完成!

実際このコピペ地獄はなかなか厳しいものがある。Google Forms と Google Spreadsheets 、そして Google Apps Script の力を借りてなんとかしたい。

今回はじめてGoogle Apps Script をいじってみて、コードを書く前にあらかじめ知っておきたかったなーと思ったことをまとめてみる。

Google Apps Script とは

Google Apps Script(以下 GAS)とは、Googleの各種サービス(Drive, Docs, Sheets, Slides, Calendar などなど)の操作や連携ができるクラウドプラットフォームのこと。ぜんぶJavaScriptで書ける。

GAS は ES6 に対応しているのか?

対応していない。

ES6で書く場合、Babelを使ってトランスパイルしておく必要がある。やり方については以下の記事が詳しい。

【GoogleAppsScript】ES6を使ったGoogle Apps Scriptの開発

ログの出力

ログを出力するためには console.log() ではなく、Logger.log() を使う。

ログを確認するには、画面上部のメニューで 表示 → ログ の順で選択する。ショートカットはMacの場合、Command + Enter

logger

追記(2018/09/23) console.log で出力したログは Stackdriver Logging から確認できる。画面上部のメニューで 表示 → Stackdriver Logging からアクセス可能。

stackdriver-loggin

Standalone Script と Container Bound Script

GAS には Standalone ScriptContainer Bound Script という2種類のスクリプトがある。

Standalone Script とは、他のサービスと紐付けられていない全てのスクリプトのことを指す。作成したスクリプトは Google Drive または Apps Script Dashboard から管理できる。

dashboard

Container Bound Script とは、Google Docs・Google Spreadsheets・Google Slides・Google Formsといった G Suiteサービスに紐付けられたスクリプトのことを指す。Google Docsなどのファイルを作成し、メニューから ツール → スクリプトエディタ と選択すれば、そのファイルに紐付けられたスクリプトが作成される。

script-editor

Standalone Script と異なり、Container Bound Script のスクリプトファイルはGoogle Driveには表示されないので、管理はダッシュボードから行う必要がある。

ファイルのコピーと Container Bound Script

ファイルをコピーしたとき、そのファイルに紐付けられているスクリプトはどうなるのか?

以下のような例を考えてみる。

  1. Google Spreadsheets のファイル「テスト」を作成

  2. メニューから ツール → スクリプトエディタ と選択し、「テスト」に紐付けた Container Bound Script を作成

  3. 「テスト」のコピーを作成

    copy

一連の手順の結果、「テスト」「テスト のコピー」という2つのファイルと、1つのContainer Bound Script が作成される。ここで重要なのは、Countainer Bound Script が2つに増えていないということ。

ref

上記の画像のように、「テスト」と「テスト のコピー」は1つのContainer Bound Scriptを共有する。つまり、スクリプトの実体はコピーされず、参照だけコピーされるようになっている。

Simple Trigger と Installable Trigger

Simple Trigger ではイベント発生時に onOpen()onEdit()onInstall() など、既存の関数が呼び出される。

  • onOpen(e) はユーザーがドキュメント・スプレッドシート・プレゼンテーション・フォームを開いたときに実行される。
  • onEdit(e) はユーザーがスプレッドシートを編集したときに実行される。
  • onInstall(e) はユーザーが add-on をインストールしたときに実行される。

Installable Trigger はイベント発生時に独自の関数を呼び出すよう指定できる。また、時間主導のトリガーを設定できる点が特徴。

installable-trigger 用意されているトリガーはサービスごとに異なっている。利用可能なトリガーまとめは以下のリンクから。

Available Types of Triggers

割り当てと制限

GAS の使用量の上限はかなり寛容に設定されているので、個人で使用する場合はあまり意識する必要がない。

ただ注意すべき項目としては、「1実行あたり6分まで」という実行時間。スプレッドシートの処理は特に時間がかかるので、うっかり6分をオーバーしてしまうかもしれない。

他にも色々と上限が設定されているので、念のため確認しておいたほうが良い。

Quotas for Google Services | Apps Script | Google Developers


noah.plus