2016-08-22 3 views
0

Hallo Ich bin ziemlich neu in AppleScript. Ich versuche, Anwesenheitsgenerator über reines AppleScript zu erstellen (ich weiß, dass ich Microsoft Excel VBA dafür verwenden würde, ich würde nur AppleScript verwenden.).Finden Sie Ereignis in angegebenen Kalender in AppleScript

Ich habe diese Art von Problem. Ich möchte überprüfen, ob im laufenden Monat einige nationale Feiertage sind oder nicht (der Kalender heißt "Státní svátky"). Ich führe meinen Code und werde leer, z. B. {} Variable. Ich weiß nicht, was in meinem Code falsch ist.

-- 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 die Funktion - i 23 zum Zweck nahm - ich Testvorgang zum Beispiel für diesen Tag getan habe, ich weiß es nicht zu 100% leer isholiday ist (23)

Bitte helfen Sie mir. Vielen Dank!

- Michael

Antwort

0

Kalender, die häufig wiederkehrende Ereignisse haben nicht im laufenden Jahr Startdatum verwenden. Ich würde die Start- und Enddaten mit diesem prüfen ...

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 

EDIT
Sobald Sie haben bestätigt, dass das Startdatum richtig sind, können Sie etwas in dieser Richtung verwenden können ...

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

Ja, es funktioniert wie ein Zauber :-) Aber ich muss den ganzen Monat durchschleifen und prüfen, ob es irgendwelche Ferien gibt. Es wäre viel optimaler, wenn ich jeden Feiertag explizit auf Variable schreibe und frage, ob es im aktuellen Monat ist. Gibt es einen anderen Weg? –

+0

Sie werden feststellen, dass, wenn Sie viele Ereignisse im Kalender haben, die who-Klausel sehr langsam ist. Suchen Sie nach ASObjC-Datumshandlern von Shane Stanley für eine schnellere Lösung. – adayzdone

Verwandte Themen