Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Nochmal ical
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
partyra
•->
•->


Anmeldedatum: 08.05.2014
Beiträge: 16

BeitragVerfasst am: 05.03.2016 - 20:36    Titel: Nochmal ical Antworten mit Zitat

Hallo zusammen,
ich kann anhand der uid einen bestimmten Termin auslesen und bearbeiten. jedoch dauert dies verhältnismäßig lange. Gibt es eine Möglichkeit dies zu beschleunigen.
Hintergrund aus einer Auftragsverwaltung soll ein Termin in iCal hinzugefügt werden.
Ich wäre euch dankbar wenn ihr da mal darüber schauen könnt.
hier mein script

tell application "Filemaker Pro Advanced"

tell current record

-- Daten an Variable übergeben

set theKalenderName to cellValue of Cell "iCal_Kalender"
set theStartDatum to cellValue of Cell "iCal_StartDatum"
set theEndDatum to cellValue of Cell "iCal_EndDatum"
set theStartZeit to cellValue of Cell "iCal_Beginn"
set theEndZeit to cellValue of Cell "iCal_Ende"
set theUID to cellValue of Cell "iCal_UID"
set theTitel to cellValue of Cell "iCal_Beschreibung"
set theBeschreibung to cellValue of Cell "iCal_Beschreibung"
set theOrt to cellValue of Cell "iCal_Ort"

end tell
end tell

-- Datum und Uhrzeit in text wandeln

set theStartDatumAlsText to theStartDatum & " "& theStartZeit as text
set theEndDatumAlsText to theEndDatum & " " & theEndzeit as text

-- Text Datum und Uhrzeit wieder zu Datum wandeln

set theStartDatum to date theStartDatumAlsText
set theEndDatum to date theEndDatumAlsText

tell application "iCal"

tell calendars theKalenderName

--Termin überprüfen ob vorhanden, wenn ja ändern, wenn nein anlegen

if (events whose uid = theUID)={} then

---Neuen Termin erstellen

set theTermin to make event at end

--Einstellungen des termins

tell theTermin
set start date to theStartDatum
set end date to theEndDatum
set summary to theBeschreibung
set description to theTitel
set location to theOrt

set theBackUID to UID

end tell


tell application "FileMaker Pro Advanced"
activate
tell current record to set cell "UID" to theBackUID
end tell
else

--Termin vorhanden und wird geändert

set theTermin to first event whose uid = theUID

tell theTermin

set start date of theTermin to theStartDatum
set end date of theTermin to theEndDatum
set summary of theTermin to theBeschreibung
set description of theTermin to theTitel
set location of theTermin to theOrt

end tell

end if

--set theBackUID to UID
reload calendars


end tell
end tell
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Lösung_Monitor_Auflös_App
•-->
•-->


Anmeldedatum: 25.01.2016
Beiträge: 53

BeitragVerfasst am: 05.03.2016 - 23:47    Titel: Antworten mit Zitat

Ich habe dein Script in meinem Filemaker 5.5 laufen lassen und kann keine Geschwindigkeitsmängel beanstanden:
So genau dem Wortlaut DEINES Scriptes folgend wird bei mir anstandslos ein neuer Termin kreiert mit allen erwünschten Kriterien und zwar ganz unabhängig davon ob ich es aus Filemaker (Pro 5.5!) heraus oder aus dem AppleScript Editor.app heraus starte:
hat Folgendes geschrieben:
tell application "FileMaker Pro"
   
   tell current record
      
      -- Daten an Variable übergeben
      
      set theKalenderName to cellValue of cell "iCal_Kalender"
      set theStartDatum to cellValue of cell "iCal_StartDatum"
      set theEndDatum to cellValue of cell "iCal_EndDatum"
      set theStartZeit to cellValue of cell "iCal_Beginn"
      set theEndZeit to cellValue of cell "iCal_Ende"
      set theUID to cellValue of cell "iCal_UID"
      set theTitel to cellValue of cell "iCal_Beschreibung"
      set theBeschreibung to cellValue of cell "iCal_Beschreibung"
      set theOrt to cellValue of cell "iCal_Ort"
      
   end tell
end tell

-- Datum und Uhrzeit in text wandeln

set theStartDatumAlsText to theStartDatum & " " & theStartZeit as text
set theEndDatumAlsText to theEndDatum & " " & theEndZeit as text

-- Text Datum und Uhrzeit wieder zu Datum wandeln

set theStartDatum to date theStartDatumAlsText
set theEndDatum to date theEndDatumAlsText

tell application "iCal"
   
   tell calendar theKalenderName
      
      --Termin überprüfen ob vorhanden, wenn ja ändern, wenn nein anlegen
      
      if (events whose uid = theUID) = {} then
         
         ---Neuen Termin erstellen
         
         set theTermin to make event at end
         
         --Einstellungen des termins
         
         tell theTermin
            set start date to theStartDatum
            set end date to theEndDatum
            set summary to theBeschreibung
            set description to theTitel
            set location to theOrt
            
            set theBackUID to uid
            
         end tell
         
         
         tell application "FileMaker Pro"
            activate
            tell current record to set cell "UID" to theBackUID
         end tell
      else
         
         --Termin vorhanden und wird geändert
         
         set theTermin to first event whose uid = theUID
         
         tell theTermin
            
            set start date of theTermin to theStartDatum
            set end date of theTermin to theEndDatum
            set summary of theTermin to theBeschreibung
            set description of theTermin to theTitel
            set location of theTermin to theOrt
            
         end tell
         
      end if
      
      --set theBackUID to UID
      reload calendars
      
      
   end tell
end tell


Falls dieses Skript bei dir Verlangsamung erzeugt muss es wohl daran liegen dass du es in deinem "Filemaker Pro Advanced" nicht wie auf meinem "FM 5.5" als "Scripttext" sondern als "Berechnetes AS" gespeichert hast
Link hat Folgendes geschrieben:
•=> wie ich es H I E R kürzlich von rudi gelernt habe

FM pro 5.5Dv2 kennt nämlich die Speicherart "Berechnetes AS" noch gar nicht. Darin könnte schon mal in deinem "Filemaker Pro Advanced" das Potential einer Verlangsamung liegen.
Erfahrungsgemäss geradezu mühsam würde es dann wenn ich es im FM 5.5 zumindest derart speichern würde:
"Apple event", solcherlei ist bei mir strengstens untersagt da solches nur Komplikationen brächte.

Stimmts?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
partyra
•->
•->


Anmeldedatum: 08.05.2014
Beiträge: 16

BeitragVerfasst am: 06.03.2016 - 01:35    Titel: Antworten mit Zitat

vielen Dank für deine Antwort.
Das Script wird als natives Applescript gespeichert nicht als berechnendes.
FM 14 Advanced Pro.
Wenn ich den link richtig verstanden habe, dann soll ich das script als Applescript speichern und mit zb. dem script schritt event senden bzw tell application"finder" ausführen. Aber wie bekomm ich dann die Parameter übergeben?? oder steh ich total auf dem schlauch???
vielen dank für eure Hilfe
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
partyra
•->
•->


Anmeldedatum: 08.05.2014
Beiträge: 16

BeitragVerfasst am: 06.03.2016 - 01:59    Titel: Antworten mit Zitat

ich glaub ich hab mich missverständlich ausgedrückt das erstellen eines neuen Termins geht von der Dauer. Aber das suchen eines Termins anhand der gespeicherten UID dauert relativ lange
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Lösung_Monitor_Auflös_App
•-->
•-->


Anmeldedatum: 25.01.2016
Beiträge: 53

BeitragVerfasst am: 06.03.2016 - 19:27    Titel: Antworten mit Zitat

tut mir leid, habe hier einen Eintrag zu früh editieren wollen.

Zuletzt bearbeitet von Lösung_Monitor_Auflös_App am 07.03.2016 - 15:55, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
partyra
•->
•->


Anmeldedatum: 08.05.2014
Beiträge: 16

BeitragVerfasst am: 06.03.2016 - 21:03    Titel: Antworten mit Zitat

Danke für deine Zeit und Antwort.
also och habe es mal als natives und berechnendes applescript laufen lassen.
es gibt für mich keinen fühlbaren unterschied.
vielleicht liege ich auch falsch. aber das finden eines Termins und das Ändern über die UID dauert ca 10-15 sek. Ist das normal?? ich habe leider keine Vergleichswerte gefunden.
deshalb dachte ich das ihr Profis vielleicht in meinen code einen Fehler findet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Lösung_Monitor_Auflös_App
•-->
•-->


Anmeldedatum: 25.01.2016
Beiträge: 53

BeitragVerfasst am: 07.03.2016 - 15:28    Titel: Antworten mit Zitat

jetzt ist mir klar geworden dass dein Problem nur bedingt mit FileMaker zusammenhängen könnte:

Habe bei mir das ganze nochmals auf FileMaker Pro 11 unter dem filename "iCalKalenderNAME" eingerichtet, und als "Natives AppleScript" auf FM Pro 11 laufen lassen und keinerlei Verzögerung mit deinem wörtlich abkopierten Script beobachtet.

Es muss also an den in FM cells eingetragenen Parametern liegen, die mir ja nicht bekannt sind aus deinem AppleScript heraus.

Somit drängt sich die Frage auf ob du auch realitätsgetreu die FM-cells ausgefüllt hast?
Habe es jedenfalls bei mir mit eigener Namensgebung(einer meiner Realität getreuen) überprüft:
-Bei mir habe ich in cell "theKalenderName" ein: "iCalKalenderNAME" eingetragen(so heisst also bei mir der reale Kalendername. Wie heisst er bei dir? stimmen bei dir auch die cell-Eingaben mit der Realität überein? hier läge nämlich eine mögliche Fehlerquelle)
- Das
partyra hat Folgendes geschrieben:
"finden eines Termins und das Ändern über die UID dauert ca 10-15 sek."
kannste ganz einfach mit dem beigelegten Dialog überprüfen.
Kannst auch handlings den Kalendernamen wie Z.B. "theKalenderName" aus deinem FileMaker heraus in beigelegtes Dialogscript hineinkopieren.
BEACHTE: wie du aus meinem Dialog ersehen kannst, weiss ich nicht, wie man aus dem iCal die UID des aktuellen Termins liest. Wie liest man die UID eines im iCal angeklickten Termins? Kannst du es mir beibringen?
jedefalls wenn ich so mache:
set theTermin to uid of events
resultiert eine Liste von ca 20 UID:
wie kannst du jetzt die gewünschte UID des aktuellen Termins finden?


Dieser Dialog sollte dir helfen Fehlerquellen aufzuspühren
hat Folgendes geschrieben:
set theKalenderName to "iCalKalenderNAME"

tell application "iCal"
   
   tell calendar theKalenderName
      
      --Termin überprüfen ob vorhanden, wenn ja ändern, wenn nein anlegen
      set theTermin to uid -- of events --of current events --of current date?<--HIER bitte um genaue Angaben
      -----------------Dialog soll dir zeigen dass es bei mir funzt ohne Bremsen-------
      set theUID to theTermin
      set ButtList to {But1:"zur Kontrolle in FM cells hinein kopierbar"}
      
      set DefAnsw to "UID:
\"" & theTermin & "\"" & " im Kalendername
\"" & theKalenderName & "\""
      display dialog "UID
des Termines im Kalendername:
\"" & theKalenderName & "\"
lauteten:
" buttons ¬
         ButtList as list ¬
         default answer DefAnsw ¬
         default button 1 ¬
         with icon 1 ¬
         giving up after 0 --<--Zahl in sec 0="ewig"
      copy the result as list to {Antwort, ButtKlick}
      -----------------Dialog---------------
   end tell
   ------ jetzt folgt wieder deine Terminologie:
   
end tell


Nun kann ich natürlich nicht wissen ob du die Grammatik des iCal-AppleScripting richtig angewandt hast.
Link hat Folgendes geschrieben:
•=> Betr. der Frage UID habe ich mich mal für meine Bedürfnisse H I E R schlau gemacht ]

Wie im folgenden ersichtlich kann ich nur für ein bestimmtes vordefiniertes Ereignis die uid ermitteln:
so etwa von offenbar echten Profis abkopiert und adaptiert wie fig. zeigt:
hat Folgendes geschrieben:
tell application "iCal"
   tell calendar "iCalKalenderNAME"
      set theEvent to first event
      return uid of theEvent
   end tell
end tell


{sorry: edit, muss hier noch eine Präzisierung einbauen}:
Wenn ich folgende Zeilen mit der Ausdehnung der Resultate mit:
uid of events

laufen lasse resultiert eine Liste:
nur so also resultiert eine mehrplätzige Liste, in deinem Script ist ja event präzisiert auf last oder first oder whose`e.t.c und damit auf ein singuläres Ereignis innerhalb der Resultat-Lsite. {}
hat Folgendes geschrieben:
tell application "iCal"
   tell calendar "iCalKalenderNAME"
      set UIDalleEvents to uid of events
   end tell
end tell

Wie gesagt es resultiert eine Liste, wie kann man nun daraus den richtige Listenpunkt definieren wenn er nicht den first event oder last event trifft?
Wie machst du es?

Exclamation Und sogleich taucht die nächste mögliche Quelle der Verlangsamung auf:
hast du die cells des Filemkers, welche Zeit und Datums erhalten, richtig formatiert ? damit die Datums und Zeit-Einträge den Ansprüchen des iCals gerecht werden können? Verliert er ev darüber 15 sec zeit? glaube ich ehrlich nicht dass solches eine Rolle spielt:
Meine Datums-Felder habe ich im FileMaker als "Datum" definiert und Zeitfelder als "Zeit"
Sodass solcherartige Einstellung sicherlich keinen Speedverlust erzeugt.

"Wer verliert dann also speed" ist unsere gemeinsame Frage. Da bin ich dir gegenüber insofern benachteiligt dass dein Script bei mir reibungslos läuft ich aber nicht dieselben Einträge im FileMaker habe wie du.
Was nun?


Zuletzt bearbeitet von Lösung_Monitor_Auflös_App am 14.03.2016 - 11:26, insgesamt 3-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
partyra
•->
•->


Anmeldedatum: 08.05.2014
Beiträge: 16

BeitragVerfasst am: 07.03.2016 - 18:19    Titel: Antworten mit Zitat

Nochmals vielen dank für deine mühe.
ich bin wie du bestimmt bemerkt hast noch nicht der wirkliche held was applescript betrifft. den code habe ich mir zusammengeschustert, teils mit Hilfe des forums bzw. mit der von dir angegebenen Seite.

meine Vorgehensweise.
habe die relevanten Felder in FM vom Typ Formel( Text) hinterlegt.
(Testweise jetzt auch als auch als Datum und Zeit, keine Änderung)

Sie lesen die Daten des Auftrages aus und übergeben sie an das script.

wenn das Feld iCal_UID in FM Leer ist, dann wird ein neuer Termin angelegt und die UID des Termins zurückgegeben.

tell application "FileMaker Pro"
activate
tell current record to set cell "UID" to theBackUID
end tell

dies geht auch soweit relativ schnell.

ich denke das in diesem teil irgendwo der wurm drin ist.

--Termin vorhanden und wird geändert

set theTermin to first event whose uid = theUID

tell theTermin

set start date of theTermin to theStartDatum
set end date of theTermin to theEndDatum
set summary of theTermin to theBeschreibung
set description of theTermin to theTitel
set location of theTermin to theOrt

end tell

denn selbst wenn ich diesen teil im script editor (mit einer UID aus der Tabelle)
durchlaufen lasse und den Termin anzeigen lasse mit

show event

bzw

im script editor dies durchlaufen lasse

tell application "Calendar"
tell calendar "Arbeit"
set theTermin to first event whose uid = "D9D5C91C-C4CD-4D3F-B2AB-92E4291DB456"
show theTermin
end tell
end tell

dauert es ca 10 sek. bis der Termin im Kalender angezeigt wird.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
partyra
•->
•->


Anmeldedatum: 08.05.2014
Beiträge: 16

BeitragVerfasst am: 07.03.2016 - 18:20    Titel: Antworten mit Zitat

dürfte ich dir das script mit dem teil der Datenbank zukommen lassen?
ich denke es wäre einfacher
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
partyra
•->
•->


Anmeldedatum: 08.05.2014
Beiträge: 16

BeitragVerfasst am: 07.03.2016 - 19:01    Titel: Antworten mit Zitat

also ich glaub ich hab die bremse gefunden.
wenn ich deinen Dialog als script einfüge bzw im scripteditor ausführe, dauert es genauso lange wie in mein script.
so wie ich es mir denke durchsucht er den gesamten Kalender bzw. alle Kalender. Das Ergebnis deines scriptes bei mir sind zig UID´s.
Gibt es eine Möglichkeit die Suche auf einen bestimmten Zeitraum zu begrenzen? Das Datum des Termins der geändert werden soll ist mir ja bekannt
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Lösung_Monitor_Auflös_App
•-->
•-->


Anmeldedatum: 25.01.2016
Beiträge: 53

BeitragVerfasst am: 07.03.2016 - 19:52    Titel: Antworten mit Zitat

Jetzt bist du mir aber vorausgeeilt, Applaus. Bin halt eine Schnecke und hab dir was vorbereitet während deine Antwort schon eingetroffen ist. Die zeigt mir, dass du nun das Problem erkannt hast:
Wollen wir doch noch ein wenig präzisieren:

Zusammenfassend kommen wir der Sache ja nun schon sehr viel näher:Juchuu
KERNPUNKT DER SACHE:
Weil ich nicht weiss wie du deine cell "iCal_UID" und die cell"UID" füllst, mache ich einen Modell-Vorschlag, welcher mal deine Voraussetzungen simulieren soll, sodass mit deinem Script in der cell "cellUID" der Wert "theUID" abgesucht werden kann (das ist doch der Zweck deines AS?)
Es könnte schon sein dass deine cell "cellUID" auf die gewünschte UID abgesucht werden kann, allerdings kommt es sehr darauf an ob du dort einen Text oder eine Liste deponiert hast! dort liegt ein enormes Verlangsamungspotential! Je nach Anzahl Termine die dein Kalender führt kann es schon mal zum Unwort "stacken.." oder so ähnlich kommen.

Wenn ich es also wüsste wie du die cells füllst, könnten wir gemeinsam Mittel und Wege finden das Verfahren abzukürzen.
Vielleicht brauchen wir dazu tatsächlich "Profis" Rolling Eyes aus Snows Forum (wie du sie bezeichnet hast, ich jedoch weit davon entfernt bin ein solcher zu sein Embarassed )

In diesem Zusammenhang noch ein Tipp für die Cell-Bezeichung im FileMaker:
es lohnt sich stets der Uebersichthalber eine Liste von Propertys zu generieren damit dann die Zellnamen im Script nur noch als Variable in Funktion treten statt mit ihren konkreten Namen. Das hilft enorm für Uebersicht bei Fehlerkorrekturen.
Z.B. Du hast die cell "UID" gar nicht aufgezählt inder Reihe der cells, sie erscheint erst mitten im Script und deren genaue Bezeichnung ist leicht zu übersehen.

hier ein Vorschlag wie man ---auch--- die cell UID füllen könnte
kannst es umwandeln dann wüsste ich wie du das machst?
hat Folgendes geschrieben:
property FmKalenderDatenbank : "icallerFM"
property theKalenderName : " "
property celliCal_UID : "iCal_UID"
property cellUID : "UID" --< so wäre es leichter für dich Fehler zu orten
tell application "iCal"
   tell calendar "iCalKalenderNAME"
      set AppleScript's text item delimiters to "
      "
      set UIDalleEvents to uid of events as text
      set AppleScript's text item delimiters to ""
      set AnzEvents to number of items in UIDalleEvents --62
      display dialog "es gibt im Kalender x " & AnzEvents & "events" default answer UIDalleEvents
   end tell
end tell
tell application "FileMaker Pro"
   tell database FmKalenderDatenbank
      set cell cellUID of current record to UIDalleEvents
      cellUID
   end tell
end tell
UIDalleEvents



Bei mir sieht es in cell "UID" so aus wenn ich obiges script laufen lasse
6E94E4AC-DB3D-4197-9D61-AAF14F478502
A1162FAA-3B4D-4B44-9B51-68495971B578
DE8C06EC-2127-470F-A47D-7014A49DF218
29092E8A-43C7-464B-B53B-AF6CBBEE926F
C46DD2C8-6430-493A-B26E-548FE7B47809
CC1DE3BC-F33D-4DCB-B227-C21295D47E67
AC5F9943-336C-4AF7-97A2-6568A4B61B80
E102E2BC-AB05-4DE6-8D76-9CFE33AE5718
6EE0A581-8DC8-4B31-A9B1-03F833F4619E
A9A2E398-EFE8-40A4-9736-765401CF29E8
27B49268-CEC2-497B-82A2-BC2A0F9331E5
4E0912AE-7EC9-4EDF-97CF-8DF115AA6C14
5FD4CD09-ACBB-4761-8EE0-367E7579491A
E7654BFD-A104-4D18-9226-7EEAE2B92AA2
731BA8A1-AF3A-4F29-A953-F25D36D54856
A4CDF6BA-EA51-494E-96F1-E26595CA7D5D
wie sieht bei dir die cell "UID" aus?

Dein Verlangsamungsproblem scheint also doch auf eine reine FileMaker-Sache hinauszulaufen:
Keine Sorge Wink solange der Hund nicht im iCal liegt (das ich nur wenig kenne) wusste ich bei mir stets eine Abhilfe in FileMaker zu schaffen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Lösung_Monitor_Auflös_App
•-->
•-->


Anmeldedatum: 25.01.2016
Beiträge: 53

BeitragVerfasst am: 07.03.2016 - 20:55    Titel: Antworten mit Zitat

Hier noch ein wertvoller Hinweis von dir:
hat Folgendes geschrieben:
Das Ergebnis deines scriptes bei mir sind zig UID´s.

der Lateiner würde dazu sagen:
"quod erat demonstrandum"
die zig UID´s werden folgendermassen generiert:
set UIDalleEvents to uid of events -<--!!

Ein solches Teil kommt in deinem Script aber gar nicht vor sondern nur in einem Modell-Script, welches die FM-cells mit iCal-UIDs füllen solle. Solcherlei zeigt massenhafte UID`s! Hast du denn in der FileMaker cell "UID" solcherlei Massen gespeichert und lässt sie im iCal aufsuchen, alle zusammen? nicht doch?

Eine eizige UID, wie sie so entsünde:
set theTermin to uid erzeugt sicherlich keinen Bremser und damit findet er in meinem iCal Kalender blitzschnell den der UID zugewiesenen Termin.: weil nämlich - wie ich jetzt weiss- gerade mal die allererste Termin UID herausgegeben wird mit obiger Scriptzeile:

Nach deinem Vorhaben sollte jedoch überprüft werden, ob in der FileMaker cell "UID" diese eine Such-UID vorkommt.Richtig?

Kann aber sein dass es mit der Grösse deines iCal-Kalenders zusammenhängt wenn auch das Aufsuchen einer einzigen UID Zeit braucht.
Beachte: wenn ich dein "verlangsamtes" Script richtig verstanden habe sucht ja das iCal gar keine UID, die Suche wird doch durch FileMaker getätigt? Stimmts?
Wenn ja wären wir 2 wieder im grünen Bereich
Wenn NEIN!
Dann aber gute Nacht, mein Latein wäre dann am Ende
nachlesen

Stimmt gar nicht!
LÖSUNG:
du hast ja anscheinend alle deine iCal Kalender-Termine als UID`S im fileMaker gespeichert?
Ja dann sind wir ja gerettet:
Dann müssten wird deine "if Bedingungen deines Scripts lediglich auf das FileMaker reduzieren und erst nach Finden den Kalender bemühen?
Was meinst?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
partyra
•->
•->


Anmeldedatum: 08.05.2014
Beiträge: 16

BeitragVerfasst am: 07.03.2016 - 21:33    Titel: Antworten mit Zitat

ok habs mal getestet.
die Zeile set theTermin to UID brachte schonmal einen gehörigen Schub.

aber kurz zur Klärung. in FM wir für jeden datensatz nur eine einzige UID gespeichert. Anhand dieser soll der passende Termin in ical gesucht werden, damit der Termin geändert werden kann.

habe folgendes getestet

Skripteditor

tell application "Calendar"
tell calendar "Arbeit"
set theTermin to uid
set theTermin to first event whose uid = "5B537CDD-297A-4B92-948C-CD69B06B1015"
end tell
end tell

Skripteditor Dauer 4,8 sek. gleiches script in FM 16,8 sek.

tell application "Calendar"
tell calendar "Arbeit"
set theTermin to uid of events
set theTermin to first event whose uid = "5B537CDD-297A-4B92-948C-CD69B06B1015"
end tell
end tell

Skripteditor dauer 16 sek. gleiche Skript in FM 30 Sek.

warum auch immer das Skript aus FM heraus wesentlich länger dauert???

anhand deines code Beispiels habe ich herausgefunden, das ical ca 32000 Termine durchsucht. daher mein Gedanke

da in FM ja UID und Datum des Termins hinterlegt ist, besteht die Möglichkeit erst den Kalender auf das hinterlegte Datum einzuschränken und dann auf die UID.
Nach meiner Vorstellung müsste dann ical ja nicht alle Termine durchsuchen oder ???
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
partyra
•->
•->


Anmeldedatum: 08.05.2014
Beiträge: 16

BeitragVerfasst am: 07.03.2016 - 22:48    Titel: Antworten mit Zitat

Ok Problem gelöst.
Hab einfach mal n paar Termine gelöscht und schon rennt es.
Vielen vielen Dank für deine Hilfe. Wir hätten noch ewig basteln können. Ohne löschen der alten Termine wären wir nicht weiter gekommen
Jetzt werd ich mal versuchen ein Script zuerstellen das mir meine alten Termine automatisch löscht d.h. Wir hören uns bestimmt bald wieder, weil ich nicht weiter komm. Es sei denn du hast eine Anleitung
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Lösung_Monitor_Auflös_App
•-->
•-->


Anmeldedatum: 25.01.2016
Beiträge: 53

BeitragVerfasst am: 08.03.2016 - 10:10    Titel: Antworten mit Zitat

partyra hat Folgendes geschrieben:
Ok Problem gelöst.
tönt ja phantastisch, allerdings!
Dein auf mich etwas crude wirkender Lösungsweg scheint mir zu brachial und es ist wahrscheinlich gar nicht nötig, dass der DIREKT und ausschliesslich übers Löschen von iCal Terminen gehen muss.

Mein prinzipieller Vorschlag um das speedproblem zu lösen lautet so:
Einfach keine UID im iCal suchen sondern statt dessen in der Datenbank FileMaker.

Aber Achtung:
Ich meine nicht etwa so wie du es machst(das ist zwar auch gut bringt aber das Speedproblem nicht weg {wie fig. zeigt} mit deinen 16 und 30 sec):

Du nutzt offenbar das Filemaker um mittels AS im iCal suchen zu lassen!
Ich würde UIDs nur in der Datenbank FileMaker drin suchen lassen und zeige dir was ich meine damit)
partyra hat Folgendes geschrieben:
tell application "iCal" --"Calendar"<--deins heisst so
   tell calendar "Arbeit"
      set theTermin to uid of events --dies ergibt eine Liste aller UIDs
      set theTermin to first event whose uid = "5B537CDD-297A-4B92-948C-CD69B06B1015"
      --hier lässt du also im "Calendar" eine einzelne UID aufsuchen: wenn "Calendar" voll ist, dauert das ein Weilchen: partyra: Skripteditor dauer 16 sek
   end tell
end tell


partyra hat Folgendes geschrieben:
Skripteditor dauer 16 sek. gleiche Skript in FM 30 Sek.

Erscheint mir etwas unfär gegenüber dem FM denn ich vermute, dass du das AS, welches eben ungeschickterweise application "Calendar" aufruft, aus dem FM heraus gezündet 16-minus-30 sec länger als aus dem Scripteditor braucht.
Kann sein dass dem so ist, glaub ich dir.
Die Abhilfe besteht darin, dass du dein Script so konzipierst, dass nicht im application "Calendar" gesucht wird sondern in application "FM". Letzeres ist wie ich es verstanden habe, ein Spiegel-Bild von Calendar mit zeilenweiser Anordnung sämtlicher Kalender-Termine:
So würdest du nämlich nicht einmal mehr die Augen reiben können und das Ergebnis steht schon so schnell vor dir wie dein Wimpernschlag es nicht schneller könnte, das aufsuchen im FM mittels AS, meine ich.

Versuch es doch mal.(für Anregungen wie man das macht stets zu haben ich: man kann solches übrigens direkt aus dem Scripteditor heraus zünden und braucht FM gar nicht als Skriptträger)

Zum löschen in iCal (muss man ja sowieso gelegentlich machen) habe ich dir noch paar nützliche Tipps, je nach Bedarf.


Zuletzt bearbeitet von Lösung_Monitor_Auflös_App am 08.03.2016 - 14:31, insgesamt 5-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X Alle Zeiten sind GMT + 2 Stunden
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Deutsche Übersetzung von phpBB.de


AppleScript für absolute Starter