2016-08-22 8 views
0

Hallo私はAppleScriptをかなり使い慣れています。純粋なAppleScriptを使用して出席者ジェネレータを作成しようとしています(私はAppleScriptのみを使用するためにMicrosoft Excel VBAを使用します)。AppleScriptの指定されたカレンダーでイベントを検索

私はこの種の問題があります。今月の祝祭日であるかどうかをチェックしたいのですが(カレンダーは "Státnísvátky"と呼ばれています)。私は自分のコードを実行し、たとえば{}変数を空にします。私のコードで何が間違っているのか分からない。

-- My isholiday function; i parameter is pointer to day of month i want to test if it is or it is not a holiday 
on isholiday(i) 

    -- Function global variables 
    set today to current date 
    set tomorrow to today + 60 * 60 * 24 

    -- work with calendar app 
    tell application "Calendar" 
     tell calendar "Státní svátky" -- national holiday calendar in my iCloud 
      set currentEvent to every event whose start date is greater than or equal to today and start date is less than or equal to tomorrow 
      return currentEvent 

      -- when an event occurs it should tells me right 
      if currentEvent is not {} then 
       display dialog "It is not empty!" 
      end if 
     end tell 
    end tell 
end isholiday 

- 機能をcaling - 私は目的のために23を選んだ - 私はその日のイベントをテストしなかった、例えば、私は私を助けてください、それは100%の空 isholiday(23)

ではありません知っています。ありがとうございました!

- 定期的なイベントがあり、マイケル

答えて

0

カレンダーは、多くの場合、現在の年の開始日を使用しないでください。あなたは開始日が正しい、あなたはこれらの線に沿って何かを使用することができることを確認したら、私は... EDIT
...これで

tell application "Calendar" 
    tell calendar "Státní svátky" -- national holiday calendar in my iCloud 
     set today to current date 
     set today's time to 0 
     copy (today + days) to tomorrow 
     set currentEvents to events whose start date ≥ today and end date ≤ tomorrow 
    end tell 
end tell 
+0

tell application "Calendar" tell calendar "Státní svátky" -- national holiday calendar in my iCloud return start date of events whose summary = "a holiday name" end tell end tell 

を開始日と終了日を確認しますうん、それは魅力のように動作します:-)しかし、私は毎月troughtループし、休日があるかどうかを確認する必要があります。明示的に各休日を変数に書き込んで、それが今月にあるかどうかを尋ねると、それは非常に最適化されます。他の方法はありますか? –

+0

カレンダーに多くのイベントが含まれると、その句は非常に遅いことがわかります。高速ソリューションのためにShane StanleyのASObjC日付ハンドラを検索してください。 – adayzdone

関連する問題