はじめに
だいぶ暖かくなってきて、半袖でいてもおかしくない時期になってきましたね。
そんな中、リモートから状況報告できる&ページで出勤状況を確認できる仕組みを
Google Apps Script (GAS)を用いてサーバーレスでサクッと作りました。
使うもの
- Google スプレッドシート(データベース)
- Google フォーム(入力)
- Google Apps Script
これらを連携させて全体を構成します。
逆に言えば、これしか使っていません。
なお、今回はhtmlページの表示にはVue.jsを使用しましたが、Vue.jsを使用しなくても構築できます。
メリット / デメリット
メリット
- Google アカウントがあれば作れる
- スプレッドシート、フォームは技術者以外でも編集できる!
- GASを使ってページが作れるので、サーバーがなくても構築できる
- 権限周りをある程度制御できる
- 権限に関しては、かゆいところに手が届かない点もあるが、地道に設定すれば実現できることが多い
- 特別なツールがなくてもすぐ作れる
- ネット環境さえあればOK、エディタすらいらない
- すぐ試せる
デメリット
- Googleに全て依存
- スプレッドシート、フォームは技術者以外でも編集できる…
- GASの編集環境が基本的によくない
- コードが増えてくると乱雑になる
- デバッグ環境がログベースのものしかない
- 権限周りはかなり慎重に設定する必要がある
- 処理が重い
- 処理数/処理時間数の制限がある
- cssとjsを、拡張子がhtmlのファイルとして扱う必要がある(回避策あれば知りたいです)
全体的には、手軽さと開発スピードに重点を置く場合に強いですが
規模が大きかったり、しっかりとしたシステムとして組もうとするとなかなか障壁が高いです。
また、スプレッドシートとフォームは特に説明しなくても誰でも操作できるので
権限など正しく設定しておけば、スクリプトを経由しないで、DBを閲覧・操作してもらうことが可能です。
この点も、良くも悪くも…な点でありますが、使い所を選べばメリットを享受できます。
編集環境については、今回は見送りましたが、今後快適な環境を構築していきたいと考えています。
構成
構成は以下の図の通り。
一覧ページ :Googleページで全員の状況を一覧表示
社員情報 :Googleスプレッドシートで一覧表示に必要な社員情報を管理
入力フォーム:Googleフォームで状況を選択して打刻
補助ツール :メール送信とslack通知
スクリプト :これら全てを繋げるのがGAS
という構成です。
これらを連携させて全体の流れが繋がると、サーバーレスで手頃で手軽なテレワーク状況報告システムが出来上がります。
それぞれの詳細については、以下を2回に分けて書いています。
1. GASのライブラリ化(その2)
2. 全員の状況を一覧表示する(その2)
3. 一覧表示に必要な社員情報を管理(その2)
4. 状況を選択して打刻(その3)
5. 連携(その3)
6. デバッグ(その3)
7. まとめ(その3)