〜
タイムズカーシェアの予約情報をカレンダーに自動反映(新規登録 / 更新 / 削除)する機能をご紹介します
〜
こちらの機能を利用すると以下が実現できます。
タイムズカーシェアで、
- 予約をすると自動でカレンダーに予定が追加される
- 予約を変更すると自動でカレンダーの予定が変更される
- 予約を取り消すと自動でカレンダーの予定が削除される
はじめに
私生活でタイムズカーをよく利用しています。
タイムズカーを予約する中で予約状況をタイムズカーのアプリ内でしか確認できない不満が昔からありました。
メールで予約登録や変更、返却証の通知は届きます。
それをカレンダーにいちいち登録していて面倒でした。
一方で Google アカウントの愛用者でもあったので、GAS の存在も知っており無料の範囲でカレンダーへの自動反映機能を簡単に作れないか思案していました。
趣味で細々と作ったので、これを機にこちらで共有しようと思います。
タイムズカー利用者の方がこちらの記事を見つけてくださったら、もし良ければ使ってみてください。
機能概要
Google のサービスを活用しています。
Gmail, Google カレンダー, スプレッドシート(データベースとして)を利用します。
動作の流れは以下の通りです。
- タイムズカーで予約を 新規登録 / 変更 / 取消 / 返却 する
- Gmail に予約情報の最新の通知メールが届く
- Gmail のメール情報を GAS で抽出する
- Google カレンダーへ GAS でイベントを反映(登録 / 更新 / 削除)する
※ GAS(Google Apps Script)は時間主導型のトリガーで実行されるように設定する前提です
開発の前提
開発にあたって、こちらの機能を基盤にしています。
開発者の方はぜひ参考にしてみてください。
Qiita - GAS でスプレッドシートを Database ライクに操作する
成果物
GoogleDrive
開発したものは以下に格納してあります。
コピーしてご自身のマイドライブへ格納してご利用ください。
スプレッドシートをデータベースの役割として、それに GAS プロジェクトが紐づいています。
GoogleDrive - タイムズカーの予約をカレンダーに自動反映
GAS を時間主導型のトリガーに設定して利用してください。
※詳細は以降で説明します。
GitHub
GAS のソースコードは以下で管理しています。
GitHub - timescar-calendar-sync
開発内容
Gmail
■ 専用のラベルを作成する
Gmail の検索を効率化するために、まずラベルを作成します。
私の場合は TimesCar
という名称のラベルを作成しました。
■ メールの自動振り分け設定
対象のメールアドレスに自動振り分け設定をしておきます。
タイムズカーからメールが届くと、そのメールに自動でラベルを付与してくれます。
スプレッドシート
開発物として上述したスプレッドシートを、データベースとして活用しています。
主に、予約情報をカレンダーへ最後に反映した日時(同期時刻管理)と、タイムズカーの予約番号とカレンダーのイベント ID を一意に紐づけた履歴リスト(同期履歴)です。
これを元に予約情報をカレンダーに効率的に自動反映することを実現しています。
GAS(Google Apps Script)
■ 概要
スプレッドシートに紐づけて GAS プロジェクトを開発しています。
こちらの GAS 内に存在する createEventFromGmail()
メソッドを時間主導型のトリガーとして設定すると、Gmail を定期的に取得して、最新の予約通知メールが存在する場合は Google カレンダーへ自動反映されます。
予約の 新規登録、変更、取り消し、返却 に対応しています。
■ ラベル名の設定 【重要】
Gmail で専用のラベル(TimesCar
)を設定するよう言及しましたが、こちらをご自身の好きな名称で作成された場合は GAS の一部を変更する必要があります。
Config.gs
ファイルに記載のある this.labelNameTimesCar
の値を、ご自身のラベル名称に合わせてください。
function config() {
// スプレッドシート ID を指定しない(空欄)場合は getActiveSpreadsheet が実行される
this.spreadsheetId = ""; // Spreadsheet ID: Default Database
// ===========================
// Setting as you like
// ===========================
this.settingAsYouLike = "Sample";
this.labelNameTimesCar = 'TimesCar'; // Gmail の任意のラベル名
this.subjectCalendarEvent = 'Times Car 予約'; // カレンダーのタイトル
...(略)
■ トリガーの設定方法
- GAS の左側にあるメニューから時計アイコンのトリガーを選択します
- トリガー設定の画面へ遷移したら、
トリガーを追加
ボタンをクリックしてダイアログを表示させます - 実行する関数に
createEventFromGmail()
を選択します - イベントのソースは「時間主導型」
- トリガーの間隔は任意で設定できます(1分〜12時間おき、他)
- 設定が完了したら保存ボタンをクリック
まとめ
以上で初期設定は完了です。
あとはタイムズカーで予約の操作を行うと、トリガーで設定した時間間隔ごとに最新の予約情報を Google カレンダーに自動反映してくれます。
最後まで読んでくださりありがとうございました!