見出し画像

Google Apps Scriptで複数のGoogle Calendarを同期する

複数のGoogle Calendarをお使いの皆さん、こんにちは。皆さんは以下のような悩みを抱えていませんか。

・ダブルブッキングしてしまった/されてしまった
・片方のカレンダーにしか予定が入っておらず、予定をすっぽかしてしまった

カレンダーを共有すれば良いだけでは?そうお考えでしょうか。

例えば仕事で複数の組織のGoogleアカウントを使っている場合、関わる人に「私のカレンダーはAのアカウントではなく、Bのアカウントを見てください」そうお願いするのは難しかったり、お願いできても浸透させるのは難しいのではないでしょうか。
またセキュリティ設定によっては、カレンダーを共有しても組織外の人には"busy"とだけ表示されることもあります。

私も同様の悩みを抱えていました。今回は、その悩みを解決する「複数のGoogle Calendarで予定を同期する方法」をご紹介します。

それは、イベントのゲストにお互いを追加するという方法です。

例えばアカウントAのイベントのゲストにアカウントBを招待し、アカウントBのイベントにはアカウントAを招待します。こうすることで、例えあなたの知り合いや同僚がどちらかのカレンダーしか見ることができなくても、同期されたすべての予定を見ることができます。

ただ、ひとつひとつのイベントにお互いのアカウントを手動で招待するのは大変です。そこで、Google Apps Scriptを使って自動でカレンダーを同期し続けたいと思います。

使うもの

Google Apps Script
Google Calendar, Gmail, SpreadsheetなどのGoogleのサービスと組み合わせたプログラムを開発、実行できるサービス。無料で使うことができます。

設定の手順

これより先、2つのGoogleアカウントをそれぞれアカウントA (john@a-company.example.com)、アカウントB (john@b-company.example.com) と呼びます。

1. Google Apps Scriptを設定する(アカウントA)
2. Google Apps Scriptを設定する(アカウントB)

Step1: Google Apps Scriptを設定する(アカウントA)

まずはGoogleアカウントA (john@a-company.example.com)のGoogle Apps Scriptを設定します。

アカウントAでログインした状態で、Google Apps Scriptを開いて「New project」をクリックしてください。

「Untitled project」の部分は「Sync Google Calendar」など、後からみて何の為のプログラムか分かるように記載するのがおすすめです。

Code.gsの中身はこちらのプログラムをコピー&ペーストしてください。

ここで、プログラムを更新します。

カレンダーのメールアドレス
カレンダーA (john@a-company.example.com) の予定にカレンダーB (john@b-company.example.com) を招待する場合、以下のようになります。

// [REQUIRED] Array of email address(es) to sync with your calendar 
const GUEST_IDS = ['john@b-company.example.com'];

Google Calendar API の追加 
サイドバーの "Services" をクリックして、その中にある "Google Calendar API" (Version v3) を追加してください。

スクリプトの実行
エディターの上部にある保存ボタンを押して、 "init" が選択されていることを確認のうえ、 "Run" からスクリプトを実行します。

初回実行時はGoogle Apps Scriptが各種アクセスを求める画面が出てきますので許可してください。

おめでとうございます!これでアカウントAの設定は完了です。

Step2: Google Apps Scriptを設定する(アカウントB)

最後にGoogleアカウントB (john@b-company.example.com)のGoogle Apps Scriptを設定します。

アカウントBでログインした状態で、Google Apps Scriptを開いて「New project」をクリックしてください。

「Untitled project」の部分は「Sync Google Calendar」など、後からみて何の為のプログラムか分かるように記載するのがおすすめです。

Code.gsの中身はこちらのプログラムをコピー&ペーストしてください。

カレンダーのメールアドレス
カレンダーB (john@b-company.example.com) の予定にカレンダーA (john@a-company.example.com) を招待する場合、以下のようになります。

// [REQUIRED] Array of email address(es) to sync with your calendar 
const GUEST_IDS = ['john@a-company.example.com'];

Google Calendar API の追加 
サイドバーの "Services" をクリックして、その中にある "Google Calendar API" (Version v3) を追加してください。

スクリプトの実行
エディターの上部にある保存ボタンを押して、 "init" が選択されていることを確認のうえ、 "Run" からスクリプトを実行します。

初回実行時はGoogle Apps Scriptが各種アクセスを求める画面が出てきますので許可してください。

おめでとうございます!これでアカウントBの設定も完了です。

Google Apps ScriptでGoogle Calendarを同期する

いかがでしたか?無事、2つのGoogleアカウントそれぞれでGoogle Apps Scriptを設定できたでしょうか。はじめの設定は少し大変かもしれませんが、一度設定できてしまえば快適なGoogle Calendar同期を楽しむことができます。(5分ごとに同期が実行されます。エラーが発生した場合はスクリプトを実行しているGoogleアカウント宛にメールでエラーが届きます)

このGoogle Apps ScriptでみなさんのGoogle Calendarがさらに使いやすくなることを願っています。

免責

記事で紹介しているGoogle Calendarを同期するGoogle Apps Scriptは私が作成し、MITライセンスで公開しています。このソフトウェアを利用して発生したいかなる問題の責任を私は負いません。詳しくはGitHub Repositoryをご覧ください。

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