5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【GAS】Google App ScriptでGmailの情報を抽出し、TimeTreeに予定を登録する

Last updated at Posted at 2020-11-07

#はじめに
製作動機実現したいことを読んで、あなたならどう作るかという視点で読んでいただいたです。で!もっといい案なりおすすめの技術があれば、コメントをいただければ幸いです。

#製作動機
私たち夫婦は、スケジュール管理アプリTimeTreeを使って、お互いのスケジュールを管理しています。私の妻がオンライン英会話アプリCamblyで、毎日レッスンをしているのですが、そのスケジュールを「TimeTree」に入れ忘れてしまうことが多く、夫婦の予定がブッキングして困っています。
「TimeTree」がAPIを公開しているということで、自動で予定を入力してくれるアプリを作ろうと思ったのが、製作動機です。

To-Be

「Cambly」で英会話レッスンの予約が完了したら、「TimeTree」に自動で予定が登録されること

#技術選定
Google App Script(GAS)

仕様

  1. 妻が「Cambly」で英会話レッスンを予約する
  2. レッスンの開始24時間前にリマインドメールがGmailに送られる
  3. GASを定期実行し、「Cambly」から来たメールを2時間置きに10件検索する
  4. 新規のレッスン予約の情報あれば、「TimeTree」に登録する
    flow.png

ソースコード

github

私の設計の落とし穴

  • 「2時間置き10件Gmailからメールを取得する」という実装にしているため、2時間以内に「Cambly」からのメールを11件以上受信すると、「TimeTree」に予定が登録されない
  • 「Canbly」からのリマインドメールが、開始24時間前にならないと来ないので、それまでTimeTree上に予定は登録されない

Q&A

Q. Gmailの受信をトリガーにして、GASを動作させれば良いのでは?
A. GASのトリガーに「Gmailの受信」がありませんでした。

Q. リマインドメールではなく、予約確定メールから予約情報を抽出した方が、スケジュール登録までのラグがないのでは?
A. 「Cambly」の設定に、予約確定メールを受け取る設定がないんです。

Q. 「Cambly」がWeb APIを公開していない?
A. 現時点では、ありません。

Q. わざわざスプレットシートにデータを保持しなくても、「TimeTree」から全スケジュールを取得して、予定がなければ追加する処理の方が良くない?
A. こちらも検討しましたが、処理が複雑になると考え、スプレットシートにデータを持つ設計としました。

これがあれば、楽できたのに実装できたのに!って感じたこと

  • GASのトリガーにGmail受信をセットできること
  • 「Cambly」側で予約完了メールを送信する設定ができること

コードを書いていて感じたこと

ソフトウェアエンジニアリングって極論、「誰かの抱えている課題を、IT技術を使って解決すること」だと私は考えています。今回、私が書いたコードも「妻の予定を把握できず、困っている私」の課題を解決するためのものです。解決するべき課題があって初めて、使う技術が決まるのだなと感じました。
人のためになるコードを書き続けるエンジニア」、そんなエンジニアに私はなりたい。

参考

TimeTree API
GASマニュアル
【書籍】詳解! GoogleAppsScript完全入門 ~GoogleApps & G Suiteの最新プログラミングガイド

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?