Zeilenweise Textfile in Numbers-Tabelle

W

wiz3000

Neues Mitglied
Thread Starter
Dabei seit
13.11.2012
Beiträge
8
Reaktionspunkte
0
Hallo liebe AppleScript Cracks

ich habe ein Textdokument mit Links zu Foldern und Bildern. Ich benötige ein Applescript, welches mich ein Textfile auswählen lässt und dann durch das Textfile geht und:

1.) beim Finden einer Zeile, die nicht .jpg enthält eine neue Zeile in einer Numberstabelle anlegt.
2.) die Zeile ohne .jpg in die erste Spalte einfügt
3.) die folgenden Zeilen (meist 2 Zeilen), welche .jpg enthalten in die nächste Spalte einträgt und durch Semikolon trennt.

Habe schon seit Stunden geforscht, komme aber leider nicht weiter, da ich eher AppleScript Newbie bin.
Wer kann mir helfen?

Besten Dank
Marc

Zur Veranschaulichung

Textfile sieht so aus

/Users/me/Pictures/BE Belgien/1000 Bruxelles, Collégiale SS. Michel et Gudule
/Users/me/Pictures/BE Belgien/1000 Bruxelles, Collégiale SS. Michel et Gudule/Scan-121029-0007.jpg
/Users/me/Pictures/BE Belgien/1000 Bruxelles, Collégiale SS. Michel et Gudule/Scan-121029-0008.jpg
/Users/me/Pictures/BE Belgien/1000 Bruxelles, Grand bazar de la Rue Neuve
/Users/me/Pictures/BE Belgien/1000 Bruxelles, Grand bazar de la Rue Neuve/Scan-121031-0001.jpg
/Users/me/Pictures/BE Belgien/1000 Bruxelles, Grand bazar de la Rue Neuve/Scan-121031-0002.jpg
/Users/me/Pictures/BE Belgien/1000 Bruxelles, Grand Hôtel des Boulevards
/Users/me/Pictures/BE Belgien/1000 Bruxelles, Grand Hôtel des Boulevards/Scan-121029-0023.jpg
/Users/me/Pictures/BE Belgien/1000 Bruxelles, Grand Hôtel des Boulevards/Scan-121029-0024.jpg

Ergebnis des Scripts sollte Folgendes liefern:

Zeile 1, Spalte 1
/Users/me/Pictures/BE Belgien/1000 Bruxelles, Collégiale SS. Michel et Gudule
Zeile 1, Spalte 2
/Users/me/Pictures/BE Belgien/1000 Bruxelles, Collégiale SS. Michel et Gudule/Scan-121029-0007.jpg;/Users/me/Pictures/BE Belgien/1000 Bruxelles, Collégiale SS. Michel et Gudule/Scan-121029-0008.jpg

Zeile 2, Spalte 1
/Users/me/Pictures/BE Belgien/1000 Bruxelles, Grand bazar de la Rue Neuve
Zeile 2, Spalte 2
/Users/me/Pictures/BE Belgien/1000 Bruxelles, Grand bazar de la Rue Neuve/Scan-121031-0001.jpg;/Users/me/Pictures/BE Belgien/1000 Bruxelles, Grand bazar de la Rue Neuve/Scan-121031-0002.jpg


und so weiter bis zum Ende des Textes
 
Zuletzt bearbeitet:
Hallo,

schau dir das mal an:

Code:
[FONT=Verdana][B]set[/B] [COLOR=#4f8f00]theText[/COLOR] [B]to[/B] "/Users/me/Pictures/BE Belgien/1000 Bruxelles, Collégiale SS. Michel et Gudule[/FONT]
[FONT=Verdana]/Users/me/Pictures/BE Belgien/1000 Bruxelles, Collégiale SS. Michel et Gudule/Scan-121029-0007.jpg[/FONT]
[FONT=Verdana]/Users/me/Pictures/BE Belgien/1000 Bruxelles, Collégiale SS. Michel et Gudule/Scan-121029-0008.jpg[/FONT]
[FONT=Verdana]/Users/me/Pictures/BE Belgien/1000 Bruxelles, Grand bazar de la Rue Neuve[/FONT]
[FONT=Verdana]/Users/me/Pictures/BE Belgien/1000 Bruxelles, Grand bazar de la Rue Neuve/Scan-121031-0001.jpg[/FONT]
[FONT=Verdana]/Users/me/Pictures/BE Belgien/1000 Bruxelles, Grand bazar de la Rue Neuve/Scan-121031-0002.jpg[/FONT]
[FONT=Verdana]/Users/me/Pictures/BE Belgien/1000 Bruxelles, Grand Hôtel des Boulevards[/FONT]
[FONT=Verdana]/Users/me/Pictures/BE Belgien/1000 Bruxelles, Grand Hôtel des Boulevards/Scan-121029-0023.jpg[/FONT]
[FONT=Verdana]/Users/me/Pictures/BE Belgien/1000 Bruxelles, Grand Hôtel des Boulevards/Scan-121029-0024.jpg"[/FONT]
[FONT=Verdana]
[/FONT]
[COLOR=#4F8F00][FONT=Verdana][COLOR=#000000][B]set[/B] [/COLOR]theFolder[COLOR=#000000] [B]to[/B] [/COLOR][COLOR=#0433ff][I]paragraph[/I][/COLOR][COLOR=#000000] 1 [B]of[/B] [/COLOR]theText[/FONT][/COLOR]
[COLOR=#4F8F00][FONT=Verdana][COLOR=#000000][B]set[/B] [/COLOR]theTable[COLOR=#000000] [B]to[/B] [/COLOR]theFolder[COLOR=#000000] & ";"[/COLOR][/FONT][/COLOR]
[FONT=Verdana]
[/FONT]
[FONT=Verdana][B]repeat[/B] [B]with[/B] [COLOR=#4f8f00]i[/COLOR] [B]from[/B] 2 [B]to[/B] ([COLOR=#0433ff][B]count[/B][/COLOR] [B]of[/B] [COLOR=#0433ff][I]paragraphs[/I][/COLOR] [B]of[/B] [COLOR=#4f8f00]theText[/COLOR])[/FONT]
[FONT=Verdana]    [B]if[/B] [COLOR=#0433ff][I]paragraph[/I][/COLOR] [COLOR=#4f8f00]i[/COLOR] [B]of[/B] [COLOR=#4f8f00]theText[/COLOR] [B]contains[/B] [COLOR=#4f8f00]theFolder[/COLOR] [B]then[/B][/FONT]
[FONT=Verdana]        [B]set[/B] [COLOR=#4f8f00]theTable[/COLOR] [B]to[/B] [COLOR=#4f8f00]theTable[/COLOR] & [COLOR=#0433ff][I]paragraph[/I][/COLOR] [COLOR=#4f8f00]i[/COLOR] [B]of[/B] [COLOR=#4f8f00]theText[/COLOR] & ", "[/FONT]
[FONT=Verdana]    [B]else[/B][/FONT]
[COLOR=#4F8F00][FONT=Verdana][COLOR=#000000]        [B]set[/B] [/COLOR]theFolder[COLOR=#000000] [B]to[/B] [/COLOR][COLOR=#0433ff][I]paragraph [/I][/COLOR]i[COLOR=#000000] [B]of[/B] [/COLOR]theText[/FONT][/COLOR]
[COLOR=#4F8F00][FONT=Verdana][COLOR=#000000]        [B]set[/B] [/COLOR]theTable[COLOR=#000000] [B]to[/B] [/COLOR]theTable[COLOR=#000000] & "[/COLOR][/FONT][/COLOR]
[FONT=Verdana]" & [COLOR=#0433ff][I]paragraph[/I][/COLOR] [COLOR=#4f8f00]i[/COLOR] [B]of[/B] [COLOR=#4f8f00]theText[/COLOR] & ";"[/FONT]
[FONT=Verdana]    [B]end[/B] [B]if[/B][/FONT]
[FONT=Verdana][B]end[/B] [B]repeat[/B][/FONT]
[FONT=Verdana]
[/FONT]
[FONT=Verdana][COLOR=#012fbe][B]do shell script[/B][/COLOR] "echo \"" & [COLOR=#4f8f00]theTable[/COLOR] & "\" > ~/Desktop/test.csv"[/FONT]


Ich habe kein Numbers, daher speichere ich die Daten in einer .csv, das sollte auch Numbers öffnen können. Punkt 3 ist etwas blöd, da das Semikolon als Trennungszeichen zwischen den Spalten dient. Ich habe es daher durch ein Komma ersetzt.
 
Hallo Pill,

vielen Dank für das Script! Es funktioniert. Kann csv in Numbers öffnen und kriege eine Tabelle in Numbers mit der ich dann weiterarbeiten kann.


Ein paar letzte Anpassungen:

1.) Wie ist es möglich den Text als Variable zu setzen? Also Dialog "Bitte Textfile auswählen" , Text wird eingelesen und als Text für Bearbeitung genommen.

2.) Wie ist es möglich In der ersten Spalte in dem String alles bis zum letzten / mit nichts zu ersetzen (Bsp. aus

/Users/me/Pictures/BE Belgien/1000 Bruxelles, Collégiale SS. Michel et Gudule
wird
1000 Bruxelles, Collégiale SS. Michel et Gudule

Da der String vorne ja variiert muss irgendwie immer bis zum letzten "/" gecheckt werden.


Zu Punkt 3: Da muss ich dann einfach ".jpg," mit ".jpg;" ersetzen.

Wenn du mir mit diesen Punkten noch helfen könntest wär das super. Vielen Dank nochmals.

 
Hier mal mit Punkt 1 u. 2:

Code:
[FONT=Verdana][size=2][b]set[/b] [color=#3F7F00]theFile[/color] [b]to[/b] [color=#0016B0][b]choose file[/b][/color] "Bitte wählen Sie die Textdatei aus: "[/FONT]
[FONT=Helvetica][b]set[/b] [color=#3F7F00]theText[/color] [b]to[/b] [color=#0016B0][b]read[/b][/color] [color=#3F7F00]theFile[/color][/FONT]
[FONT=Helvetica][b]set[/b] [color=#3F7F00]theFolder[/color] [b]to[/b] [color=#0000FF][i]paragraph[/i][/color] 1 [b]of[/b] [color=#3F7F00]theText[/color][/FONT]
[FONT=Helvetica][b]set[/b] [color=#3F7F00]theTable[/color] [b]to[/b] ([color=#0016B0][b]do shell script[/b][/color] "echo " & [color=#6C04D4]quoted form[/color] [b]of[/b] [color=#3F7F00]theFolder[/color] & " | sed 's/.*\\///g'") & ";"[/FONT]
[FONT=Helvetica]
[/FONT]
[FONT=Helvetica][b]repeat[/b] [b]with[/b] [color=#3F7F00]i[/color] [b]from[/b] 2 [b]to[/b] ([color=#0000FF][b]count[/b][/color] [b]of[/b] [color=#0000FF][i]paragraphs[/i][/color] [b]of[/b] [color=#3F7F00]theText[/color])[/FONT]
[FONT=Helvetica]	[b]if[/b] [color=#0000FF][i]paragraph[/i][/color] [color=#3F7F00]i[/color] [b]of[/b] [color=#3F7F00]theText[/color] [b]contains[/b] [color=#3F7F00]theFolder[/color] [b]then[/b][/FONT]
[FONT=Helvetica]		[b]set[/b] [color=#3F7F00]theTable[/color] [b]to[/b] [color=#3F7F00]theTable[/color] & [color=#0000FF][i]paragraph[/i][/color] [color=#3F7F00]i[/color] [b]of[/b] [color=#3F7F00]theText[/color] & ", "[/FONT]
[FONT=Helvetica]	[b]else[/b][/FONT]
[FONT=Helvetica]		[b]set[/b] [color=#3F7F00]theFolder[/color] [b]to[/b] [color=#0000FF][i]paragraph[/i][/color] [color=#3F7F00]i[/color] [b]of[/b] [color=#3F7F00]theText[/color][/FONT]
[FONT=Helvetica]		[b]set[/b] [color=#3F7F00]theTable[/color] [b]to[/b] [color=#3F7F00]theTable[/color] & "[/FONT]
[FONT=Helvetica]" & ([color=#0016B0][b]do shell script[/b][/color] "echo " & [color=#6C04D4]quoted form[/color] [b]of[/b] [color=#3F7F00]theFolder[/color] & " | sed 's/.*\\///g'") & ";"[/FONT]
[FONT=Helvetica]	[b]end[/b] [b]if[/b][/FONT]
[FONT=Helvetica][b]end[/b] [b]repeat[/b][/FONT]
[FONT=Helvetica]
[/FONT]
[FONT=Helvetica][color=#0016B0][b]do shell script[/b][/color] "echo \"" & [color=#3F7F00]theTable[/color] & "\" > ~/Desktop/test.csv"[/size][/FONT]

Punkt 3 ist wie gesagt schwierig, da bei einer .csv-Datei entweder das ; oder , als Trennungszeichen zwischen den Spalteninterpretiert wird und das Komma bereits im Dateinamen vorkommt (und daher nicht als Trennungszeichen verwendet werden kann), kann im Skript kein Semikolon verwendet werden. Du könntest höchstens ein komplett anderes Zeichen und ersetzt es dann in Numbers per suchen/alle ersetzen mit einem Semikolon.

Oder du sorgst einfach dafür, dass deine Dateinamen frei von Sonderzeichen sind, es gibt nämlich einen Grund, warum Sonderzeichen in Dateinamen nicht gern gesehen sind ;)
 
danke für die Updates. Funktioniert wunderbar.
Punkt 3 mache ich dann mit Suchen & Ersetzen, das geht ja ganz schnell.
Nochmals vielen Dank für die schnelle Hilfe.
 
Hoffe du kannst nochmals helfen.
Ich möchte das Script nun in Automator in einen Automator-Ablauf einbauen.
Habe also Script ausführen ausgewählt und deinen Code eingesetzt. Funktioniert bestens.
Wie kann ich denn nun automatisch eine Datei als Input nutzen, die auf dem Desktop liegt und Titel.txt heisst? So muss ich in dem Ablauf nicht die Datei auswählen.

Habe versucht die erste Zeile zu ändern, kriege dann aber immer eine Fehlermeldung "Can not convert to file".
 
Du musst nur die erste Zeile ersetzen durch

set theFile to alias ":Users:Name:Desktop:Titel.txt"
 
Danke dafür! Hat wunderbar funktioniert.
Um es auch "universaler" zu machen habe ich dann

set theFile to alias ((path to desktop as Unicode text) & "Titel.txt")

verwendet damit ich das Progrämmchen dann auch auf anderen Accounts verwenden kann.

Jetzt versuch ich noch das Ersetzen in Numbers zu automatisieren. Also erst ".jpg, /" ersetzen mit ".jpg;/"

und danach ".jpg," ersetzen mit ".jpg". Sollte ja auch irgendwie gehen.
 
Zurück
Oben Unten