5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Googleカレンダー、カレンダーアプリにイベントを登録する AppleScript

Last updated at Posted at 2016-03-19

きっかけ

グループウェアで、自分を含む予定が登録されるとメールで通知が届く。グループウェアのカレンダーはセキュリティポリシーのため社内でしか見られないので、個人のカレンダー(Google Calendar や OS X のカレンダーアプリ)に登録するのを手動でやっていたが、結構頻度が有るので自動化しようと、AppleScriptを書いた。

スクリプトの説明

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

 メール本文のデータをスクリプトに渡す方法は、クリップボードにコピーして行っているが、メールの形態はグループウェア毎に違うので、ここでは紹介しない。 参考として、ソースの冒頭のコメントで変数名とデータ形式を書いておく。

Googleカレンダーに登録するソース

 Googleカレンダーには、標準のブラウザを使って直接Googleカレンダーのイベント登録画面を表示して入力フィールドにデータをセットするスクリプト。

SetGoogleCal.scpt
-- Googleカレンダーにイベントを登録する AppleScript
-- イベント名: Summ (SJIS)
-- 場所: Loc (SJIS)
-- 開始時刻と終了時刻:Datetime (yyyymmddThhmmss/yyyymmddThhmmss)
--
on urlEncode(inData) -- URLエンコード(%エンコード)
    -- 文字コードを utf8 としてエンコードしたい場合は、「as «class utf8»」で変換したものを渡すこと。
    set scpt to "php -r 'echo rawurlencode(" & quote & inData & quote & ");'"
    return (do shell script scpt) as string
end urlEncode

set escSumm to urlEncode(Summ as «class utf8»)
set escLoc to urlEncode(Loc as «class utf8»)
set CalURL to "http://www.google.com/calendar/event?action=TEMPLATE&src="
set CalURL to CalURL & "<<登録するカレンダーID>>@group.calendar.google.com"
set CalURL to CalURL & "&text=" & escSumm
set CalURL to CalURL & "&dates=" & Datetime
set CalURL to CalURL & "&location=" & escLoc
open location CalURL

カレンダーアプリ(Calendar)に登録するアプリ

 カレンダーアプリにイベントを登録して、そのウインドウを表に表示するスクリプト。

SetCal.scpt
-- イベント名: Summ (SJIS)
-- 場所: Loc (SJIS)
-- 開始時刻:sDate (yyyy/mm/dd hh:mm:ss)
-- 終了時刻:eDate (yyyy/mm/dd hh:mm:ss)
--
set sDate to date sDate -- 日時データの文字列(yyyy/mm/dd hh:mm:ss)を dateクラスに変換
set eDate to date eDate
tell application "Calendar"
    set newEvent to make new event at end of events of calendar "<<登録するカレンダーの名前>>" with properties {summary:Summ, location:Loc, start date:sDate, end date:eDate}
    activate
end tell

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?