きっかけ
desknet's NEOでは、自分を含む予定が登録されるとメールで通知が届く。グループウェアのカレンダーはセキュリティポリシーのため社内でしか見られないので、個人のカレンダー(Google Calendar)に登録するのを手動でやっていたが、結構頻度が有るので自動化しようとした。
WSH も試したが、日本語プログラミング言語「なでしこ」が、結構強力で簡単に記述することができたので、それを紹介する。
「スケジュール予約状況案内」メールについて
グループウェアの「desknet's NEO」では、打合せの予約などで自分以外の人が、自分のスケジュールに予定を登録することができ、その際、メール通知をするように設定しておくと、自分宛てのメールとしてその内容が通知されます。
そのメール本文は次のような内容になっています。
下記の内容で予定を追加しました。
日付:2016/03/dd 10:00 ~ 2016/03/dd 11:00
登録日:2016/03/xx
登録者:((予定を登録した人の名前))
登録先:((予定が登録された人の羅列))
予定:((予定の件名))
場所:--((未記入だと--になる))
利用設備:((会議室等の名前。未記入は--))
内容:((コメント。未記入はブランク))
ソースコードの説明
メール本文から必要な情報を抜き出して、それぞれの変数に形式を合わせてセットするソースコード。
メール本文のデータを「なでしこ」に渡す方法は、メール本文をクリップボードにコピーして行っている。
GoogleCalendar用のURLスキームも参考にどうぞ。
「なでしこ」のソース
クリップボード取得
それを反復
一時はそれ
もし、一時から3文字左部分が「日付:」ならば
開始日時は一時の4から16文字抜き出す
開始日時は開始日時の「 」を「T」に置換
開始日時は開始日時の「/」を「」に置換
開始日時は開始日時の「:」を「」に置換
終了日時は一時の16文字右部分
終了日時は終了日時の「 」を「T」に置換
終了日時は終了日時の「/」を「」に置換
終了日時は終了日時の「:」を「」に置換
もし、一時から3文字左部分が「予定:」ならば
予定は一時の4から100文字抜き出す
もし、一時から3文字左部分が「場所:」ならば
もし、一時の4から2文字抜き出すが「--」でないならば
場所は一時の4から100文字抜き出す。
もし、一時から5文字左部分が「利用設備:」ならば
もし、一時の6から2文字抜き出すが「--」でないならば
場所は一時の6から100文字抜き出す。
URLヘッダは「http://www.google.com/calendar/event?action=TEMPLATE&src=」
# ↓登録先GoogleカレンダーのURLをセット
URLカレンダーは「<ここは自分が登録したいカレンダー固有のもの>@group.calendar.google.com」
# メールソフトの日本語はSJISなので、UTF8に変換し更にURLエンコードする
URL予定は「&text={(予定をSJIS_UTF8N変換)をURLエンコード}」
# 開始日時・終了日時は「yyyymmddThhmmss/yyyymmddThhmmss」
# メールで通知される日時は秒を含まないので、「00」を付加する
URL日時は「&dates={開始日時}00/{終了日時}00」
URL場所は「&location={(場所をSJIS_UTF8N変換)をURLエンコード}」
# 揃ったデータを一行にまとめてURLスキームを完成する
URL全体はURLヘッダ&URLカレンダー&URL予定&URL日時&URL場所
# URLスキームでブラウザを開く
URL全体を起動