Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
7
Help us understand the problem. What is going on with this article?

More than 5 years have passed since last update.

@ynomura

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

きっかけ

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

7
Help us understand the problem. What is going on with this article?
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
7
Help us understand the problem. What is going on with this article?