Google Apps Scriptを使ってハマった5つのこと【GAS】

9月に入って夏休みのちょっと腑抜けた日々も終わり、徐々に通常の生活に戻りつつある今日この頃ですが、

忘れない内に忘備録としてまとめようかなと思います。

ちなみに私は今週末夏休みなのでこれからダラダラさせていただきますが(笑)

どうもyutampです。

 

諸事情があってサーバー立てたりドメイン取るのがめんどくさくて、でもそんなパフォーマンス期待してないよ、

どうせ中の人達だけだし。

とゆるーい感じで社内ツールを作ることになり、せっかくなので採用したGoogle Apps Scriptについてのお話。

スクリーンショット 2015-09-01 16.39.36

 

Google Apps Scriptとは

すっごい簡単に言うとペライチのページをGoogle Drive上で作ることができる代物。

JavaScript likeな書体でプログラミングでき、

Google FormとかSpread SheetとかGoogle CalenderとかGoogle関連のサービスなら連携できるちょっとした優れもの。

 

で今回はGoogle Apps Scriptで作った入力フォームからSpreadSheetにデータを貯めるために使ったのですが、

「だったらGoogleFormでええやん」となるのですが、

  • その後のデータ参照をSpreadSheetを直で見るのは禁止にしたい
  • 入力する人によって選択できるデータを制限したい
  • Slackに通知おくって

みたいな要望があったのでGoogle Apps Scriptになったわけです。

ちなみに通称はGASで通ってるみたいみたいですがガスと紛らわしくて検索全然でてこない。

 

で、まずハマったこと

1.SpreadSheetの閲覧/編集権限を制限できない

たぶんプログラム作成者のアカウントでデータ追加するようにすれば良いのかもしれないけど、
そうすると変更履歴が全部自分になってしまってなりすましで入力されたら誰かわからなくなってしまい
しょうがなくログインアカウントでデータ追加するオプションで設定。

 

2.GoogleDrive上に作成したScriptがでないことがある

GoogleDriveより新規作成したものはフォルダ内にScriptが作成されるが、
SpreadSheetのスクリプトエディタから作成すると、おそらくSpreadSheet内にデータが入ってしまうためGoogleDrive上ででてこない。
やっかいなのはSpreadSheetに対してScriptが紐付いているのに他のSpreadSheetのScriptでも参照することができてしまうので、
複数SpeadSheetに対して参照するプログラムを作る際はGoogleDrive上から作ったほうが後々わかりがいいかも。

 

3.エラーがわかりづらい

テストとしてアクセスした時にうまく表示されなくてその日は諦めて帰ったら次の日にメールが送られてきて、
エラーログを特定時間に配信する設定がデフォルトのよう。
できればすぐに送って、特定時間に設定するのはオプションにしてほしい。

 

4.アクセスが遅い

ExcelのVBA感覚で作るとあまりの遅さにイライラしてしまうかもしれない。
SpreadSheetの内容を全部読み込んでキャッシュすることもできるのだが
「ある程度」リアルタイム性を求めるならば、データのコンフリクトを避けるために何らかの対応が必要になってくる。

 

5.アドオンとしてのプログラムの場合デバッグが困難

SpreadSheetのアドオンとして動かす場合、大抵はSpreadSheetから入力されたデータをもとに何か行うと思うが、
インプットデータがどう入ってくるか初めはわからないのでログ出力を行った上、
似たようなデータを生成するテストfunctionを作成して、それを呼び出すことでデバッグした。
トリガがうまく動かない時とかは確認のしようがないのでどうしようもない。

 

とまあいくつか挙げてみたわけだが、開発スピード優先という意味でかつ簡易的でよければ、
いろいろなことができる可能性を秘めたツールになっているので候補としてあげてみるのは良いかと思う。

Slack連携なども外部ライブラリで実装してあるので
4行程度のプログラムでpostできてしまうのでwebcron的なこともできて結構助かる面もある。

今回はSpreadSheetGoogleFormの連携については試したが次はGoogleCalenderとかともやってみたいなー。

このエントリーをはてなブックマークに追加