Google Apps Script は何が強くてどんなときに使うべきか自分なりのプラクティスをまとめてみた

tanabee
google-cloud-jp
Published in
7 min readJun 18, 2019

はじめに

Google Apps Script は無料で色んなことが実現できるため、ついつい「全て GAS でやっちゃおう」みたいな話になりがちです。Google Apps Script も万能ではないので、強み・弱みを理解した上で他の選択肢と比較して使うのをお勧めします。

Google Apps Script のプロジェクトを 2–30 個作ってきた中で、自分なりのプラクティスをまとめてみます。

この内容は Cloud Next ’18 in Tokyo で登壇したときの内容を含んでいます。この登壇から半年以上経ったのでアップデート部分も以下にまとめています。

Google Apps Script の強み・弱み

まず、強みと弱みについてまとめてみます。

強み 1. Google Apps の API を簡単に呼び出すことができる

一番の強みはこれだと思います。Google Apps Script を使うと Spreadsheet や Gmail, Calendar などの Google Apps の API を簡単に呼び出せます。認証系のコードを全く書かずに API を呼び出せるので、30 行くらいのコードで欲しいものが作れたりします。

強み 2. G Suite のドメインに閉じて公開できる

Google Apps Script では Web ページを作ることもできますが、例えば社員一覧などの Spreadsheet を Web 表示するなど、社内に閉じて公開したいケースがあります。Google Apps Script では公開範囲を G Suite のドメインに閉じて公開することが可能なので、これまた認証系の処理を書かなくて済んで、何も考えずにセキュアなシステムが出来上がります。

強み 3. 無料である

「なんでも Google Apps Script でやっちゃえ」となる一番の要因だと思いますが、Google Apps Script には制限があるものの(後述します)、無料で使えます。Web サイトや API なども簡単に作れてしまうので、なんでも Google Apps Script で公開したくなります。

強み 4. デプロイが容易であること

Google Cloud Functions などの他の FaaS と同様で、基本的に関数を保存すればデプロイされるので、デプロイ作業が非常に簡単です。 clasp などを使うとローカルで開発したものを Git と同じように push できるのでおすすめです。

弱み 1. 割り当てにより、様々な制限がある

1 回、1 日あたりの実行時間や各種 Google Apps の API の呼び出し回数などの制限があります。この割り当て ( Quotas ) は緩和されていく方向に進んでいるようですが、実装する上で注意が必要です。

弱み 2. npm は標準で非対応

Google Apps Script は JavaScript で書けるので npm パッケージを利用したいところですが、標準機能として npm パッケージを利用することはできません。Google Apps Script で利用できるようにコンバーターを作っている方もいますが、Node.js の Core API を使っているものなどはコンバートしても使えない場合があります。

Google Apps Script を選択するかの判断基準

ではどのようなケースで Google Apps Script を利用すると良いでしょうか。判断の基準となる要素を列挙します。

1. Google Apps に関わる処理かどうか

まず、 Google Apps Script の最大の強みを活かせるかどうかです。Google Apps に係る処理であれば Google Apps Script を利用するのが良いと思いますが、そうでなければ Google Cloud Functions など他の FaaS も選択肢に入れましょう。例えば GCP サービスに関わる処理であれば Google Cloud Functions を選択したほうが良いケースが多いです。

2. Google Apps の標準機能で実現できないか

Google Apps は様々な機能が提供されており、意外に知られていない機能も多くあるかと思います。例えば Spreadsheet には QUERY 関数で他のシートから SQL ライクにデータを抽出したり、GOOGLETRANSLATE 関数を使って翻訳する機能などがあります。Google Docs には音声入力をする機能なども用意されています。まずは標準機能で実現できないか検討してみると良いと思います。また、最近は Google Apps にアドオンを追加できるようになったので、これらも選択肢として考えると良いでしょう。

3. コード量が膨大にならないか

私の場合はコード量 100 行程度を目安に Google Apps Script を使うか検討します。私は Google Apps Script をローカルで開発して clasp でデプロイして挙動を確認するので、コードが肥大化するとデバッグがしづらくなりメンテナンスコストが高くなります。また、コード量が多くなると Google Apps Script エディタも重くなるので最小限のコードにおさえることをお勧めします。

4. npm が欲しくなるような複雑な処理が含まれないか

Google Apps Script では npm を利用できないので、 npm が必要な場合は npm 利用が可能な Google Cloud Functions などを選択肢に入れると良さそうです。Google Apps の API は Google Apps Script ほど簡単ではありませんが、Google Cloud Functions などからも叩くことができるので、認証で苦労してライブラリで楽するのも 1 つの手です。

5. 最悪失敗しても許される処理か

Google Apps Script には割り当てがあったり、時折意図しないエラーに遭遇することがあります。例えば決済などの失敗したらクリティカルな処理は Google Apps Script で実装せずに、適切なアーキテクチャを考えた方がよいです。

6. どうしても無料で作りたいか

どうしても無料で作りたい場合には Google Apps Script は有力な選択肢になるかと思います。ちなみに Google Cloud Functions も月間の呼び出し回数が 200 万回まで無料(記事執筆時点)など、無料枠が大きいのでこちらの選択肢も検討すると良いでしょう。

まとめ

以上、Google Apps Script の強み・弱みについて、最大限効果を発揮するケースと、逆に他の選択肢を選んだほうが良いケースについてまとめました。

色々書きましたが Google Apps Script は Google Apps の連携をするのに強力で RPA の文脈でも今後使われていくサービスだと思いますので、皆さん触ってみてください。

--

--

tanabee
google-cloud-jp

Vice President, RPG TEC. Google Developers Expert / Licensed Scrum Master / Website: https://tanabee.github.io