Calendar.appにAppleScriptで予定を追加したい

Macの『カレンダー』に、AppleScriptで予定を追加したいのですが、上手く行きません。

というか、ぐぐっても初心者向けの記事で的を射たものが見つかりませんでした。

ご存知の方がいらっしゃいましたら、教えて下さい。


もう少し具体的に目的を話すと、

「FileMaker Pro」で算出した、日時を元にスクリプトでカレンダーに転記したいのです。

FileMaker Proで扱う「スクリプト」とは、AppleScriptで記述すればよいのだと思います。

FileMaker Pro上では、AppleScriptのデバッグはできないようで、

「Automator」や「AppleScript エディタ」を使ってみました。


まず、


set eStart to date "2016年11月1日 火曜日 18:00:00"

set eEnd to eStart + 15 * minutes

set eName to "予定追加のテスト"


tell application "Calendar"

set newEvent to make new event at end of events of calendar "重要な日" with properties {summary:eName, start date:eStart, end date:eEnd}

end tell


というように記述してやってみました。

が、カレンダーが前面に出てはくるものの予定が追加されません。

エラーらしきものも出てきません。(ここに辿り付くまでに試行錯誤はしてエラーは見ています)


"重要な日"という項目(カレンダー)は既にあります。

ユーザがアップロードしたファイル

ここもScript側で指定しないで既存のどれかが選択されるようになるか、

既存でない場合、新しく追加されるようにしたいです。

(上記の記述だと、既にあるもの以外を記述すると「〜取り出す事ができません」というエラーになります)



そして、

Automator、AppleScriptエディタ、共に、

実行すると、

"2016年11月1日 火曜日 18:00:00"

の日付の部分が勝手に「1999年12月28日火曜日」に置き換わってしまいます。

システム環境設定>言語とテキスト>地域

は、「西暦」になっています。

ユーザがアップロードしたファイル



都合、三点が問題になってます。

  1. 上記の記述だと、予定が追加されない。
  2. 既存の項目(カレンダー)をScriptで指定しない、或は新規に作る。
  3. 日付の部分が勝手に置き換わってしまう。

よろしくお願いします。<(_ _)>


使用環境

OS X 10.8.5

FileMaker Pro 11.0.4

AppleScript エディタ 2.5.1

Automator 2.3

MacBook Pro (Retina, 15-inch, Early 2013), OS X Mountain Lion (10.8.5), /Macは複数台、OSも複数を所有・使用しております

投稿日 2016/10/29 02:18

返信
返信: 18

2016/10/29 11:40 T22T への返信

おお、何か掴めた気がします。ありがとうございます。


既存の項目(カレンダー)の取得の仕方も解りましたし、判定もできました。

「if 〜 is in 〜 then」を使ってリストに含まれているか判定して、処理を分ける事もできました。

新しく項目(カレンダー)を追加する方法も解りました。


でも、iCloud上ではなく、『このMac内』だけになってしまうのですね。

それは、OS(カレンダー.app)のバージョンによるものなのでしょうか?



あと、「Calendarの辞書」とはこれの事でしょうか・・・

ユーザがアップロードしたファイル

これを日本語で翻訳(解説)してあるページなんてないですよね。汗

2016/10/31 04:05 シルヴァグレイ への返信

はい、添付された画像で選択されているのは、applicationクラスの、documentとというエレメントになります(オレンジ色のアイコンでEの文字が入っています)。 右上にある検索フィールドでaccountと入力して検索すると、accountのクラスが表示されるかもしれません。 私の環境では表示されないのですが、リマインダ.appやメモ.appの辞書ではaccountのクラスがあって、iCloudのアカウントを指定することができます。

ユーザがアップロードしたファイル

AppleScript Language Guideのページは、AppleScript Editor.appのヘルプメニューからも表示できると思います。

2016/10/31 06:39 T22T への返信

AppleScript Language Guideのページは、AppleScript Editor.appのヘルプメニューからも表示できると思います。


Mac OS X 10.6.8 / Safari 5.1.10 で、developer.apple.com にアクセスすると、こんな悲しいことに...。


ユーザがアップロードしたファイル


シルヴァグレイさんも環境が古めなので同様なのかもしれません。一方 Firefox は証明書を独自に持ってるので現時点では正常にアクセスできます。


ただし、Firefox の OS X 10.6 から 10.8 までのサポートは既に終了しているので、延長サポート版 (ESR) を使うと。


Firefox の OS X 10.6、10.7、10.8 に対するサポート終了について

https://support.mozilla.org/ja/kb/firefox-osx


# すみません。ちょっと説明が足りませんでした。

2016/10/29 16:42 シルヴァグレイ への返信

度々、失礼致します。

シルヴァグレイ による書き込み:


でも、iCloud上ではなく、『このMac内』だけになってしまうのですね。

それは、OS(カレンダー.app)のバージョンによるものなのでしょうか?

私の環境(macOS 10.1.1, Calendar.app ver. 9.0)では、Script Editor.appのカレンダー辞書(添付された画像のものです)にはアカウントのクラスが定義されていないですね。 なので、iCloudのカレンダーは、あらかじめ、カレンダーアプリの方で作っておく必要がありそうです。 


シルバーグレイさんのMacではどうでしょうか? 添付なさった画像では、Standard Suiteのmakeコマンドが選択された状態ですが、その下にあるapplicationの項目がクラスになります(四角の薄紫色のアイコンで、cの文字が入ったものです)。 日本語の辞書については、私は今まで見たことがないです。 また、AppleScriptのLanguage guideを一読すると、たいていの処理の方法をつかめると思います。

2016/10/31 16:22 シルヴァグレイ への返信

そうですか、ちょっと不便ですが、iCloudアカウントのカレンダーについては、AppleScriptではなく、カレンダーアプリの側であらかじめ作った方が簡単そうです。


Language Guideのページについては私の方で勘違いしていましたね(すみません。 Hiro.Sさん、画像を貼り付けて頂き、有難うございます)。


こちらのAppleScriptヘルプは日本語がありました。→ http://help.apple.com/applescript/mac/10.9/?lang=ja

Language Guide程は詳しくないので、足りない部分はこのコミュニティで質問したり、ネット上の情報を集めることもできそうです。

2016/10/29 03:30 シルヴァグレイ への返信

失礼致します。 私の環境はmacOS Sierra(Script Editor.app ver. 2.9, Apple Script ver. 2.5)なのですが、

シルヴァグレイ による書き込み:


set eStart to date "2016年11月1日 火曜日 18:00:00"

このステートメントでエラーになります。 火曜日の前に半角のスペースがあることが原因のようです。


set eStart to date "2016111日火曜日 18:00:00"


と、スペースを取り除いてみるとどうでしょうか?

2016/10/29 04:37 T22T への返信

シルヴァグレイ さんによる書き込み:


"2016年11月1日 火曜日 18:00:00" の日付の部分が勝手に「1999年12月28日火曜日」に置き換わってしまいます。


当方の環境 (Snow Leopard) は古いので、実際に試すことができないため、情報提供のみとなりますが...、下の記事が参考になるかもしれません。なお、このバグが OSX 10.8.5 で修正されたかは知りません。中途半端な情報ですみませんが、ご参考まで。


Piyomaru Software » OS X 10.8のdateに強烈なバグ

http://piyocast.com/as/archives/2347

2016/10/29 09:03 Hiro__S への返信

半歩進みました!有り難う御座います。


勝手に置き換わってしまうのは、どうやらそのバグのせいのようですね。

曜日を英語表記にしたり、省略したりすると、一応回避できました。


でも、

ちゃんと実行されるのは、一度きりのようで

一度実行したあとにそのまま続けて再度実行すると、

エディタ上の日付はそのままでも、

実際に追加される予定は、1999年12月28日になってしまうようです。



OS X 10.11.6でやってみましたら、そこについては上手く動作しました。

なので、この件については「バグ」で、OS X 10.8.5では不可避と結論付けるしかなさそうです。

・・・が、OS X 10.11.6では新たな問題が発生。後ほど新たにスレ立てるかも。汗

2016/10/30 07:58 シルヴァグレイ への返信

シルヴァグレイ さんによる書き込み:


折角貼って頂いたURLが開けないようです。

デベロッパーじゃないからですかね。汗


Firefox ESR だと大丈夫のはずです。


Mozilla Japan 法人向け情報 — Firefox の事例と関連情報

https://www.mozilla.jp/business/

日本語版のダウンロード

Mozilla Firefox Web Browser

https://www.mozilla.org/ja/firefox/organizations/all/#ja

2016/10/30 06:19 T22T への返信

何度も有り難う御座います。


これでしょうか。

ユーザがアップロードしたファイル

英語だと、殆ど解らず、機械翻訳に頼って部分的に英和辞書と睨めっこしてるような状態です。汗


折角貼って頂いたURLが開けないようです。

デベロッパーじゃないからですかね。汗

2017/09/24 02:09 シルヴァグレイ への返信

2)『既存の項目(カレンダー)をScriptで指定しない、或は新規に作る』 につきまして、


私の環境では、Calendarの辞書にアカウントのクラスが無いので、新規にカレンダーを作成すると、iCloud上ではなく、『このMac内』のアカウントにカレンダーが追加されてしまいます。 カレンダーの名前のリストは、


tell application "Calendar"

 set calendarList to name of calendars

end tell


でリスト化できますので、Choose from list コマンドで、一覧から選択できます。 以下のAppleScriptでは、変数 theCalendarに選択したカレンダーの名前が入ります。


tell application "Calendar"

set calendarList to name of calendars

set calendarList to calendarList & "新しいカレンダー"

set theCalendar to (choose from listcalendarList) as text

if theCalendar is "新しいカレンダー" then

display dialog "新しいカレンダーの名前を入力してください" default answer ""

set theCalendar to text returned of result


makenewcalendarwith properties {name:theCalendar}

end if

end tell

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

Calendar.appにAppleScriptで予定を追加したい

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。