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

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

More than 3 years have passed since last update.

きっかけ

グループウェアで、自分を含む予定が登録されるとメールで通知が届く。グループウェアのカレンダーはセキュリティポリシーのため社内でしか見られないので、個人のカレンダー(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

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
ユーザーは見つかりませんでした