[GastForen Programmierung/Entwicklung AppleScript Scriptschnipsel aus FileMaker DB

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Scriptschnipsel aus FileMaker DB

Kultgerd
Beiträge gesamt: 61

12. Okt 2010, 15:49
Beitrag # 1 von 16
Bewertung:
(5582 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,
wir haben xml files, in denen die Positionsdaten, Bestellnummer und Artikelname eines blätterbaren eKataloges enthalten sind. Für jede Doppelseite 1 xml file.

Die Kataloge gibts es in verschiedenen Sprachen, deshalb haben wir uns ein FileMaker-Tool gebaut, das die entsprechenden Daten in den files ausließt und die Sprachvariante in eine neue Datei schreibt.

Bei der Vergabe des neuen Dateinamens erhalte ich aber einen Fehler:
"Finder hat einen Fehler erhalten: „name of file (hier kommt der korrekte Datenpfad) ... :XML_Ausgabe:temp.xml" kann nicht als bk_1.xml" gesetzt werden.

Hier das Teilscript, in dem der Name vergeben wird:
Code
global ausgabedatei 
global ausgabedateiname

tell application "Filemaker Pro"
go to layout "Bearbeitung"
set ausgabedatei to cell "Ausgabedatei" of current record
set ausgabedateiname to cell "Ausgabedateiname" of current record
end tell

tell application "Finder"
set name of file (ausgabedatei) to ausgabedateiname
end tell

tell application "Filemaker Pro"
activate
end tell


ERGÄNZUNG:
Das bedeutet also, dass der Dateiname "name of file" nicht als "bk_1.xml" gesetzt werden kann. Ich hab nur keinen Plan, warum das nicht geht. Kann das ein Rechteproblem sein??

Kann mir hier bitte jemand nen Tipp zur Fehlerbehandlung geben?
Viele Grüße
Gerd

(Dieser Beitrag wurde von Kultgerd am 12. Okt 2010, 16:19 geändert)
X

Scriptschnipsel aus FileMaker DB

Hans Haesler
  
Beiträge gesamt: 5826

12. Okt 2010, 18:01
Beitrag # 2 von 16
Beitrag ID: #453884
Bewertung:
(5564 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gerd,

ich habe versucht, das Problem zu rekonstruieren. Ohne Erfolg. Das heisst, die Datei wird problemlos umbenannt.

Allerdings habe ich keinen FileMaker zur Verfügung.

Deshalb die Frage: Was geschieht, wenn du die Datei per Script auswählst und umbenennen lässt?

Code
set ausgabedatei to (choose file) as Unicode text 
set ausgabedateiname to "bk_1.xml"

tell application "Finder"
set name of file (ausgabedatei) to ausgabedateiname
end tell

Die Klammern um "ausgabedatei" stören nicht. Und wenn "file" durch "alias" ersetzt wird, klappt es hier ebenso.

Wenn es im "richtigen" Ablauf nicht funktioniert, dann könnte es ein Rechteproblem sein.

Oder ist die Datei "temp.xml" noch in Gebrauch?

Gruss, Hans


als Antwort auf: [#453866]

Scriptschnipsel aus FileMaker DB

Kultgerd
Beiträge gesamt: 61

13. Okt 2010, 16:32
Beitrag # 3 von 16
Beitrag ID: #453986
Bewertung:
(5530 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
vielen Dank für den Test und die Antwort. An den Rechten scheint es nicht zu liegen. Wir haben es gerade probiert. Ich will grad mal was anderes versuchen. Ich sehe im Ablauf keine temp.xml Datei entstehen. Wenn die (noch) nicht da ist zum entspr. Zeitpunkt, kann das Script auch nix umbennen. Vielleicht liegt da das Problem begraben. Habe aber keine große Hoffnung.

Viele Grüße
Gerd


als Antwort auf: [#453884]

Scriptschnipsel aus FileMaker DB

Kultgerd
Beiträge gesamt: 61

14. Okt 2010, 12:29
Beitrag # 4 von 16
Beitrag ID: #454076
Bewertung:
(5508 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
ich komme damit einfach nicht weiter. Jetzt haben wir mal gegoogled und einen anderen Lösungsansatz über ein Dropplet gefunden. Hier wird aber off. am Dateiformat gemeckert. Hat dazu jemand noch nen Tipp?
Ganz zu Beginn der Verarbeitung gibts ein Problem bei:
set logfile to (open for access file droppedfile with write permission)

Dehalb konnte ich nicht wirklich den Rest weiter testen.

Code (Tauschtext reduziert, in Wirklichkeit etwas umfangreicher):

Code
global droppedfile 
global file_contents
global new_file_contents
global srchList
global replList

on open droppedfile
sarpl(droppedfile)
end open


on sarpl(droppedfile)

--- Such-&Ersetzliste
set srchList to {"Abendbluse", "Abendhose", "Abendrock", "Abendtasche", "Abendtop", "Ankle-Boots", "Armband", "Badeanzug", "Bademantel", "Ballerinas",}

set replList to {"La veste chemisier", "Le pantalon", "La jupe", "La pochette de soirée", "Le top", "Les escarpins", "Le bracelet", "Le maillot 1 pièce", "Le peignoir de bain en éponge double face", "Les ballerines"}

--- Datei öffenen & bearbeiten

tell application "Finder"

set logfile to (open for access file droppedfile with write permission)
read file droppedfile
set file_contents to result
set new_file_contents to file_contents



--- Schleife über Suchbegriffe starten
repeat with i from 1 to (count of srchList)
set srch to item i of srchList
set repl to item i of replList
set AppleScript's text item delimiters to srch
set the temp to every text item of new_file_contents
set AppleScript's text item delimiters to repl
set new_file_contents to temp as string
set new_file_contents to temp
end repeat

--- alte Dateiinhalte löschen und speichern
set eof of logfile to 0
write new_file_contents to logfile
close access logfile


tell application "Finder"
activate
display dialog "vorher: " & file_contents & return & return & "nachher: " & new_file_contents
end tell
end tell

end sarpl


Viele Grüße
Gerd


als Antwort auf: [#453986]

Scriptschnipsel aus FileMaker DB

Hans Haesler
  
Beiträge gesamt: 5826

14. Okt 2010, 14:50
Beitrag # 5 von 16
Beitrag ID: #454087
Bewertung:
(5492 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gerd,

ja, da ist Einiges nicht richtig.

– Zum Lesen einer Datei braucht man den Finder nicht, weil open for access ein Befehl der ScriptingAdition "Standard Additions" ist.

– Die fünf Variablen als global zu definieren ist nicht notwendig.

– Das Ergebnis eines gedroppten Objekts ist eine Liste von Aliassen. Auch wenn nur eine Datei aufs Icon gezogen wurde. Deshalb mit item 1 das erste Element holen.

– Dieses Element kann mit as Unicode text in einen String umgewandelt werden.

– Beim Öffnen-Befehl wird die Variable logfile definiert. Deshalb muss diese auch beim Lesen benutzt werden.

– Das Einlesen in eine Variable kann direkt geschehen. Ohne Umweg über result.

– Die letzte Zeile innerhalb der Schleife (set new_file_contents to temp) muss entfernt werden.

– Die AppleScript's text item delimiters müssen am Schluss auf einen leeren String zurückgesetzt werden.

– Das Schreiben sollte in einem try-Wickel geschehen. Gibt es ein Problem, dann sollte man versuchen die Datei zu schliessen.

Code
on open droppedfile 
set curFile to (item 1 of droppedfile) as Unicode text
sarpl(curFile)
end open

on sarpl(curFile)

--- Such-&Ersetzliste
set srchList to {"Abendbluse", "Abendhose", "Abendrock", "Abendtasche", "Abendtop", "Ankle-Boots", "Armband", "Badeanzug", "Bademantel", "Ballerinas"}

set replList to {"La veste chemisier", "Le pantalon", "La jupe", "La pochette de soirée", "Le top", "Les escarpins", "Le bracelet", "Le maillot 1 pièce", "Le peignoir de bain en éponge double face", "Les ballerines"}

--- Datei öffnen & bearbeiten
set logfile to (open for access file curFile with write permission)
set file_contents to read logfile
set new_file_contents to file_contents

--- Schleife über Suchbegriffe starten
repeat with i from 1 to (count of srchList)
set srch to item i of srchList
set repl to item i of replList
set AppleScript's text item delimiters to srch
set the temp to every text item of new_file_contents
set AppleScript's text item delimiters to repl
set new_file_contents to temp as string
end repeat
set AppleScript's text item delimiters to {""}

--- alte Dateiinhalte löschen und speichern
set eof of logfile to 0
try
write new_file_contents to logfile
close access logfile
on error
try
close access logfile
end try
end try

display dialog "vorher: " & file_contents & return & return & "nachher: " & new_file_contents

end sarpl

Hier funktioniert es so. Un bei dir?

Gruss, Hans


als Antwort auf: [#454076]

Scriptschnipsel aus FileMaker DB

Kultgerd
Beiträge gesamt: 61

14. Okt 2010, 15:23
Beitrag # 6 von 16
Beitrag ID: #454090
Bewertung:
(5479 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
sieht schon deutlichst besser aus :-))
Ich hab noch ein Problem mit dem encoding. Ich erhalte die Meldung, das es kein sauberes UTF8 ist (malformated UTF8).
Wenn ich in TextWrangler das file mit MacRoman öffne, würde es passen. Dann setze ich ich auf UTF8 und alles wäre palletti. Für mehrere Hundert files ist das bei 2 Sprachen aufwendig.

Muss ich das Format noch extra angeben?

Viele Grüße
Gerd


als Antwort auf: [#454087]
(Dieser Beitrag wurde von Kultgerd am 14. Okt 2010, 15:35 geändert)

Scriptschnipsel aus FileMaker DB

Hans Haesler
  
Beiträge gesamt: 5826

14. Okt 2010, 15:39
Beitrag # 7 von 16
Beitrag ID: #454092
Bewertung:
(5473 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gerd,

wann, genau, kommt die Meldung?

Gruss, Hans


als Antwort auf: [#454090]

Scriptschnipsel aus FileMaker DB

Kultgerd
Beiträge gesamt: 61

14. Okt 2010, 16:08
Beitrag # 8 von 16
Beitrag ID: #454094
Bewertung:
(5459 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wenn ich das Dok testhalber mit TextWrangler öffne und französische Sonderzeichen enthalten sind, erhalte ich bereits beim öffnen die Meldung . Die Sonderzeichen können dann nicht korrekt angezeigt werden. Reopen als MacRoman zeigt die korrekte Darstellung. Dann wähle ich als Format nur noch UTF8 und speichere.

Cheerio
Gerd


als Antwort auf: [#453866]

Scriptschnipsel aus FileMaker DB

Hans Haesler
  
Beiträge gesamt: 5826

14. Okt 2010, 16:32
Beitrag # 9 von 16
Beitrag ID: #454100
Bewertung:
(5448 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gerd,

würdest Du bitte eine kleine Problemdatei stuffen und mir zustellen?
Denn ohne Konkretes ist es schwierig, Dir einen guten Rat geben zu können.

Gruss, Hans


als Antwort auf: [#454094]

Scriptschnipsel aus FileMaker DB

Kultgerd
Beiträge gesamt: 61

14. Okt 2010, 16:35
Beitrag # 10 von 16
Beitrag ID: #454101
Bewertung:
(5446 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Mach ich gerne, in ner Minute hast du sie.
VG
Gerd


als Antwort auf: [#454100]

Scriptschnipsel aus FileMaker DB

Hans Haesler
  
Beiträge gesamt: 5826

14. Okt 2010, 16:57
Beitrag # 11 von 16
Beitrag ID: #454106
Bewertung:
(5435 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gerd,

danke für die Dateien.

Hier funktioniert das Tauschen per Droplet wie vorgesehen. Kein Problem.

Auch wenn ich die Dateien mit TextWrangler oder BBEdit öffne, wird nichts angemeckert.

Allerdings unter Mac OS X 10.4.7. Vielleicht macht das den Unterschied.

Wann kommt denn bei Dir welche Meldung, wenn Du eine Datei auf das Icon des Droplets ziehst?

Gruss, Hans


als Antwort auf: [#454101]

Scriptschnipsel aus FileMaker DB

Kultgerd
Beiträge gesamt: 61

14. Okt 2010, 17:05
Beitrag # 12 von 16
Beitrag ID: #454107
Bewertung:
(5421 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Nö, wenn ich die Datei im Textwrangler öffne und franz. Sonderzeichen enthalten sind. (OS 10.4.11)

Gruß
Gerd


als Antwort auf: [#454106]

Scriptschnipsel aus FileMaker DB

Kultgerd
Beiträge gesamt: 61

14. Okt 2010, 17:25
Beitrag # 13 von 16
Beitrag ID: #454111
Bewertung:
(5411 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wenn Du mit den Dateien die ich dir geschickt habe die französische Version rechnen lässt, und anschließend die übersetzte Datei im Textwrangler öffnest, erhalte ich die Fehlermeldung. Ich muss dann re-open mit MacRoman durchführen und manuell auf UTF8 umstellen. Erst dann passt es.

VG
Gerd


als Antwort auf: [#454107]

Scriptschnipsel aus FileMaker DB

Hans Haesler
  
Beiträge gesamt: 5826

14. Okt 2010, 21:22
Beitrag # 14 von 16
Beitrag ID: #454123
Bewertung:
(5383 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gerd,

jetzt kann ich das Problem nachvollziehen.

Ich habe nun im Script, welches Du mir geschickt hast, anstelle der englischen Liste die französische aktiviert. Und wenn ein per Script geschriebenes File Akzentbuchstaben enthält, kommt beim Öffnen mit TextWrangler die Fehlermeldung.

Ich habe versuchsweise den Schreib-Befehl mit as «class utf8» ergänzt. Aber das hilft nichts.

Deshalb mein Rat: Die Textdateien mit BBEdit öffnen. Damit gibt es kein Problem.

Gruss, Hans


als Antwort auf: [#454111]

Scriptschnipsel aus FileMaker DB

Kultgerd
Beiträge gesamt: 61

15. Okt 2010, 09:04
Beitrag # 15 von 16
Beitrag ID: #454142
Bewertung:
(5348 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
vielen Dank für die Info. Wir müssen jetzt einfach mal probieren, ob es trotzdem funktioniert mit dem eKatalog. Die Daten werden ins Flashfile eingeladen und dort als tooltipp angezeigt. Wenn es nicht funktioniert, müssen wir halt die französischen Daten nochmal per Hand ändern.

Vielen Dank und herzliche Grüße
Gerd


als Antwort auf: [#454123]
X