技術

Google Apps ScriptでGoogleカレンダーの予定を他人にメール送信

どうも、フリーランスのITエンジニア兼ブロガー兼投資家のKerubitoです。

Googleカレンダーに予定を入れたら、他の人にそれをメールで知らせたい。

Google先生であれば、それぐらい朝飯前だろう。

そう思って調べてもそれらしい機能が見つからない。

うーん、あっても良さそうだけどないのであれば、仕方がない・・・。

自分で作るか。

そんなこんなでGoogle Apps Scriptで「Googleカレンダーの予定を他人にメール送信する」という機能を作ってみました。

どんな状況か

どんなシチュエーションか説明しておきます。

例えば、Googleカレンダーに「●月●日***会議」と予定を追加したとします。

この予定をある人たちに知らせたい。

ただし、その人たちはこの会議には出席しないので、予定への招待はしないんです。

予定へ招待すればメールが飛びますが、そうでないのでメールは飛びません。

メールで連絡したい人たちとはカレンダーを共有しています。

なので、カレンダーを見さえすれば予定は把握できるんです。

ただ、私がどのタイミングで予定を入れるのかがわからないので、いちいちカレンダーをチェックするのは面倒なんですよね。

特に直前に予定を入れた場合は。

「***の予定入れましたけど、確認してもらえました?」

なんていうメッセージをSlackで送らないといけない。

非常に面倒。

なので、予定を追加したら自動で関係者にメール送信したいというわけです。

Google Apps Scriptを使うことに

Google関係であれば、Google Apps Scriptで実現できるだろう。

ということで、面倒ですが作ってみました。

ちなみにGoogle Apps ScriptとはGoogleが提供するサーバー・サイドのスクリプト環境です。

面倒な環境構築などは不要でChromeやFirefoxといった、ブラウザベースで動かせます。

あえていうなら、必要なのはGoogleアカウント。

Google Apps Scriptでプロジェクトを作成

Googleアカウントにてログインした状態でGoogle Apps Scriptにアクセスします。

Google Apps Scriptのトップページ1

トップページの一番下までスクロールします。

すると画面左下に「Apps Script Dashboard」がありますので、これをクリック。

Google Apps Scriptのトップページ2

するとプロジェクトの一覧画面が表示されますので、左上の「新規スクリプト」をクリック。

Google Apps Scriptのプロジェクト一覧

エディタが起動しますので、ここに処理を記述します。

Google Apps Scriptのエディタ

下準備終わり。

Google Apps Scriptで記述したソース

以下がソースコードです。

やっていることは

・カレンダーを取得
・現在から1年後までの予定を取得
・1時間以内に登録された予定であればメールを送信

カレンダーを取得する際にはカレンダーIDが必要のようです。

getCalendarByIdの部分。

私の場合はGmailのアドレスのそのままでしたね。

このスクリプト言語、拡張子がgsなんでGoogle Scriptとのこと。

javaScriptを拡張したもののようで、javaScriptを知っていたら問題なさそう。

スクリプトのトリガーを設定

スクリプトを実行するトリガーを設定します。

エディタの「時計マーク」をクリック。

するとトリガー一覧画面に遷移します。

Google Apps Scriptのトリガー一覧画面

「トリガーを追加」をクリック。

Google Apps Scriptのトリガーの設定

トリガーの設定をします。

カレンダーの予定が追加された場合にスクリプトを実行したいので、イベントのソースを「カレンダーから」にします。

一番下でカレンダーのオーナーのメールアドレスを入力する必要がありますが、Googleカレンダーを使用する許可が必要になるためです。

Safariでやると「スクリプトの承認に失敗しました。ポップアップブロッカーの設定を確認してもう一度お試しください」とエラーが出てしまいました。

面倒なので、Chromeでやり直したらすんなりうまくいきましたね。

まとめ:Google Apps Scriptは便利

Google Apps Scriptのスクリプトにて「予定を入れたらSlackで連絡していた手間」が省けるようになりました。

おおよそかかった時間は1時間弱ですので、今後のことを考えたら時間をかけた価値はあったかと。

難点が、カレンダーの予定の詳細(時間など)を変更したり、削除しただけでメールが飛ぶところ。

適当に作ったので仕方がないですが、時間があったらもうちょっと賢くしたいですね。

-技術

© 2023 FIRE達成のフリーランスエンジニアブログ