Help us understand the problem. What is going on with this article?

デスクネッツNEOからの「スケジュール予約状況」メールからGoogleカレンダーにイベントを登録する「なでしこ」のソース

More than 3 years have passed since last update.

きっかけ

 desknet's NEOでは、自分を含む予定が登録されるとメールで通知が届く。グループウェアのカレンダーはセキュリティポリシーのため社内でしか見られないので、個人のカレンダー(Google Calendar)に登録するのを手動でやっていたが、結構頻度が有るので自動化しようとした。
 WSH も試したが、日本語プログラミング言語「なでしこ」が、結構強力で簡単に記述することができたので、それを紹介する。

「スケジュール予約状況案内」メールについて

 グループウェアの「desknet's NEO」では、打合せの予約などで自分以外の人が、自分のスケジュールに予定を登録することができ、その際、メール通知をするように設定しておくと、自分宛てのメールとしてその内容が通知されます。

 そのメール本文は次のような内容になっています。

下記の内容で予定を追加しました。

日付:2016/03/dd 10:00 ~ 2016/03/dd 11:00
登録日:2016/03/xx
登録者:((予定を登録した人の名前))
登録先:((予定が登録された人の羅列))
予定:((予定の件名))
場所:--((未記入だと--になる))
利用設備:((会議室等の名前。未記入は--))
内容:((コメント。未記入はブランク))

ソースコードの説明

 メール本文から必要な情報を抜き出して、それぞれの変数に形式を合わせてセットするソースコード。

 メール本文のデータを「なでしこ」に渡す方法は、メール本文をクリップボードにコピーして行っている。

 GoogleCalendar用のURLスキームも参考にどうぞ。

「なでしこ」のソース

setGoogleCal.naco
クリップボード取得
それを反復
    一時はそれ
    もし、一時から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全体を起動

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした