見出し画像

Microsoft BookingsとGoogleカレンダーの橋渡しをしようとした話

この記事はアドベントカレンダー企画「みんなの北星」2024年の19日目の記事です。

前提と目標


前提

職場でMicrosoft Bookings(以下:Bookings)とGoogleカレンダーを利用しており、全スタッフの予定はGoogleカレンダーに入力・管理し、外部からの対応予約を受け付けているスタッフの予定はBookingsにも入力し、予定の重複を防ぎつつ予約受付を行っていました。
しかしBookingsへの予定入力忘れ、および予定の確認漏れで予定の重複が発生してしまったため、何かいい感じの対策はないかと調べてみました。

目標

  1. どちらか片方だけに予定を入力すれば、両方へ予定入力が行われる

  2. Googleカレンダーに入力した予定が自動でBookingsに入力される

一番の理想は「Googleカレンダーに入力→Bookingsへ自動入力」という形ですが、とにかく「片方に入力すれば両方に反映される」、もしくは「見やすい形で予定を一括管理および予定の予約を行える」のが必須条件です。

出てきた案

Googleカレンダーの「予約スケジュール」を使う

Googleカレンダーだけでそのまま予約システムを完結させる方法です。
外部からの予約受付が出来るのなら、わざわざBookingsに頼ったり予定表を分けたりしなくてよくなりますので、各段に楽になります。
しかしGoogleカレンダーの予約スケジュールでは、Bookingsと違いスケジュール予約ページに選択式の質問を増やせなかったり、我々が必要としていない個人情報(電話番号など)まで必須項目になっていて除外できない、という事が判明しました。
また、Bookingsの場合だと「予約フォームからどのスタッフの予定を予約するか」が選択できるのですが、Googleの予約スケジュールの場合、1つのGoogleアカウントに対して1つのスケジュール予約ページしか作成できず、予約を行う側が不便になることが予想されました。
そのため、Googleカレンダーの予約スケジュール案は没になりました。

全スタッフの予定をBookingsで管理する

現状Googleカレンダーには全ての予定を入力し、Bookingsには特定のスタッフの予定のみを入力していましたが、いっそ全てBookingsで管理した方が入力が楽になるのではないかと思いました。
しかしBookingsの予定表は我々にとって見やすくはなく、今以上にBookings予定表に表示されるスタッフを増やしてしまうと、予定を確認する事自体が難しくなってしまう事が予想されます。
そのため、Bookingsで全スタッフの予定を管理する案も没になりました。

Google Apps Scriptでなんとかする

Google Apps Script(以下:GAS)とは、Googleで提供されているサービス
(Googleスプレッドシート、Gmailなど)に対して「こんな処理を行って」といった任意のスクリプトを書けば、自動で処理を行ってくれる素敵機能です。
Googleカレンダーの予定もGASで制御可能なので、「Googleカレンダーに予定が追加された時に、Bookingsに予定を追加する」というスクリプトが作成できれば何とかなるんじゃないか?と思いました。
調べた結果、「Microsoft Graph API」なるものが必要らしい?と分かりました。

実際に橋渡しを試みる

沢山出てくる知らない単語

仕組みが分からないままでは作りようもありませんので、「Microsoft Graph API」というものを調べてみた結果、更に分からない単語がわらわら出てきました。

  • Microsoft Graph API

  • クライアントID/クライアントシークレット

  • Microsoft Azure Portal

  • Microsoft Entra ID

調べてみたり、Chat GPTに聞いてみたり、更にそれを調べて確認してみたりした結果、多分こういう事だろうと理解できました。

  • Microsoft Graph API:Microsoftサービスのデータを使うための門

  • クライアントID/クライアントシークレット:門を開けるための鍵

  • Microsoft Azure Portal:色々なサービスを抱えている、サーバー上にあるコンピューター機能。Microsoft Entra IDもこのサービスの一つに含んでいる。

  • Microsoft Entra ID:鍵の発行所

理解した内容を図解するとこんな感じです。

分からない単語に関して理解した図

※内容に誤りがありましたら優しくご指摘いただけますと幸いです。

各サービスの動作や必要な操作を理解したところで実際のスクリプト作成ですが、その前に最大の壁が待ち構えています。

最大の難関

スクリプトをどんな風に書けばいいのか、そもそも作れるのかを知るためにも、まずは実際に「Microsoft Azure Portal」を触ってみなければ分かりません。
そして職場のMicrosoftアカウントである以上、勝手にサービスを利用して情報システム課に迷惑をかけてしまう事は避けるべきです。
(過去に悪意なく、情報システム課の意図しないMicrosoft365サービスを利用していてご迷惑をかけてしまった事があるので猶更です)
そんなわけで情報システム課の方に相談してみました。

「えっと…ちょっとそれは利用の許可が出せなくて、そもそもMicrosoft Azure Portalも一般アカウントに見せる予定の無い物なので、もしかしたら今後Microsoft Azure Portalの画面自体見えなくなるかもしれません…」

デスヨネー

※今現在は別の方法で、もっと私が理解できるやり方で、過去に作ったスクリプトも流用できそうな形で「Bookings→Googleカレンダー」の連携を目指しています!


いいなと思ったら応援しよう!