いきさつ
昨年から大学ではZoom授業が行われ,今年もまだ遠隔授業....
毎時間カレンダーアプリを開いてZoomリンクを開くのは面倒くさい.
プログラマの三大美徳でも怠惰って言うじゃないか.
だったら自動化してしまおう!
使うもの
- スクリプトエディタ
- Mac標準カレンダーアプリ
カレンダーアプリの設定1
- カレンダーアプリを開き,予定(イベント)を作成する
- イベントの"メモ"または"URL"に授業のリンクを貼る
[注意] 同期しているGoogleカレンダーなどでも利用できます.しかし,googleカレンダーにはイベントにURLを設定できないため”メモ”部分にリンクを貼り付けてください
プログラムを書く
- スクリプトエディタを開く
- 新規書類を選択し,エディタウィンドウを開く
- AppleScriptが選択されていることを確認する(ウィンドウ左上)
- 以下のプログラムを書き込む
- メニューバー(画面上部) -> ファイル -> 書き出す
- ファイルフォーマットを"スクリプト"から"アプリケーション"に変更して保存する
script Method
on main()
try
tell application "Calendar"
set CurrentTime to (current date) --現在時刻の取得
tell Method to setSecond(CurrentTime) --秒数を00に変更
set cTime to result --現在時刻を取得(検索開始時間)
-- (設定1)
set theEndDate to cTime + (10 * minutes) - 1 --検索終了時間 現在から30分後まで取得
--カレンダー内のイベント情報を取得(現時刻から指定終了時間までの範囲指定)
--このカレンダーの名前(授業)から時刻でイベント検索
-- (設定2)
set EvList to every event of calendar "授業" whose (start date ≥ cTime) and (start date ≤ theEndDate)
--取得したイベント1つづつに実行
repeat with theEvent in EvList
-- (設定3)
tell Method to openUrl(url of theEvent)
end repeat
end tell
end try
end getUrl
on openUrl(link)
-- デフォルトのブラウザで引数linkを開く
open location link
end openUrl
on setSecond(theDate)
-- 秒数を0秒に設定する
set time of theDate to ((time of theDate) div minutes) * minutes
return theDate
end setSecond
end script
tell Method to main()
[注意]
(設定1) theEndDateでは10分後に始まるイベントまでを取得するようにしています. 1時間後まで取得したい場合は 10minutes を 1hours に,1日後まで取得したい場合は 1*days のように変更してください.
(設定2) カレンダー名(ここでは「授業」)を取得したいカレンダー名に変更してください.登録しているカレンダー名はカレンダーアプリで表示されているものです.
(設定3) イベントの"メモ"にリンクを記述した場合は"url of theEvent" から "summary of theEvent"に変更してください.
カレンダーアプリの設定2
- カレンダーアプリを再度開き,登録したイベントを編集する
- 通知を なし -> カスタム
- サウンド付きメッセージ -> ファイルを開く
- 新たに表示されたカラムを カレンダー -> その他
- 先ほど作成したアプリケーションファイルを選択
- 通知時間を 5分前 くらいにする
- OKをクリックして確定
[注意]
授業は毎週あると思いますが,イベントを繰り返し設定すると来週以降リンクを取得できません.
1週間分の授業予定を登録 -> 全イベント選択 --> 来週以降にコピペ をしてもらえると反応すると思います.