[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Verzeichnis auslesen und Tabelle anlegen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Verzeichnis auslesen und Tabelle anlegen

Gunray
Beiträge gesamt: 26

28. Mär 2011, 09:09
Beitrag # 1 von 6
Bewertung:
(2974 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich habe mich lange nicht mehr gemeldet, aber ich habe eine Frage. Ich möchte mit Hilfe eines Scriptes ein Verzeichnis auslesen wo PDF Dateien abgespeichert sind.

Die Bezeichnung dieser Dateien ist folgenderweise:

Auftragsnr_Sorte_Auflage_Folie.pdf

Nun möchte ich aus dem Dateinamen eine Tabelle anlegen, die Anhand der Auflage gleich den Preis errechnet und eine Spalte die das Datum aus dem Erstellungsdatum der Datei errechnet. Wenn die A4 Seite voll ist soll die Tabelle einen Übertrag auf der nächsten Seite anlegen und die Tabelle fortsetzen. Als letzen Punkt soll die Gesamtsumme errechnet werden.

Nun meine Frage an die Profis, bevor ich mich daran mache. Ist mein Vorhaben überhaupt möglich?
X

Verzeichnis auslesen und Tabelle anlegen

Martin Fischer
  
Beiträge gesamt: 12783

28. Mär 2011, 10:25
Beitrag # 2 von 6
Beitrag ID: #467814
Bewertung:
(2964 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Benjamin,

Antwort auf: Ist mein Vorhaben überhaupt möglich?


Im Prinzip ist das möglich, aber etwas wackelig.

Da Auslesen des Verzeichnisses ist kein Problem.
Aber wie Du wahrscheinlich weißt, ist es innerhalb einer über mehrere Seiten umbrechende Tabelle nicht ohne Weiteres möglich, zu ermitteln, auf welcher Seite sich eine Tabellenzelle befindet. Andersherum ist es nicht ohne Aufwand möglich, zu ermitteln, welches jeweils die erste Zeile auf einer neuen Seite ist.

Die aktuelle Seite einer Zelle kannst Du etwa über folgenden Umweg ermitteln:
1. Erzeuge in der Zelle temporär einen verankerten Textrahmen.
2. Löse die Verankerung und prüfe dann, auf welcher Seite er liegt.

Für einen praktikableren Workflow für Deine Aufgabe könntest Du alternativ zur Arbeit mit einer einzelnen Tabelle, bei der Du immer wieder prüfst, auf welcher Seite eine Zelle liegt, vielleicht so vorgehen, dass Du parallel zu der Haupttabelle oben auf jeder Seite eine einzeilige Tabelle anlegst, in die Du den Übertrag einfügst. Die ist einfacher zu adressieren.
Es bleibt aber immer noch schwierig, Anfang und Ende der Haupttabelle, die über mehrere Seiten umbricht, auf einer Seite zu ermitteln.

Vielleicht wäre es ohnehin sinnvoller, die Haupttabelle, die sich über mehrere Seiten erstreckt, in einzelne Tabellen, die sich nur über eine Seite erstrecken, zu unterteilen.

Brauchst Du die Tabelle unbedingt in InDesign?
In Excel wäre das einfacher anzulegen und zu berechnen.


als Antwort auf: [#467810]

Verzeichnis auslesen und Tabelle anlegen

Gunray
Beiträge gesamt: 26

28. Mär 2011, 13:10
Beitrag # 3 von 6
Beitrag ID: #467846
Bewertung:
(2937 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Im Grunde genommen ist es egal wo ich die Tabelle erstelle, allerdings habe ich von Excel überhaupt keine Ahnung wie ich dort mit VBA Verzeichnisse auslesen kann. Mit Indesign hätte ich mit den Java Scripten mehr anstellen können.


als Antwort auf: [#467814]

Verzeichnis auslesen und Tabelle anlegen

Martin Fischer
  
Beiträge gesamt: 12783

28. Mär 2011, 13:47
Beitrag # 4 von 6
Beitrag ID: #467849
Bewertung:
(2932 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wenn's nur um's Rechnen ginge, dann wäre folgender Workflow möglich:

1. Ermittlung der Daten aus dem ausgewählten Verzeichnis und Vorstrukturierung der Daten mit tabseparierten Zeilen – entweder temporär in InDesign platzieren und von dort als Text-Datei exportieren oder direkt in eine Text-Datei ausgegeben.

2. Öffnen der tabseparierten Text-Datei in Excel und dort Formeln zur Berechnung ergänzen.


Wenn ich es aber richtig verstanden habe, dann geht es nicht nur um's Berechnen, sondern auch um's Gestalten und um die Ausgabe.
In diesem Falle kämen die o.g. Vorschläge zur Strukturierung der Tabelle(n) zum Zuge.


als Antwort auf: [#467846]

Verzeichnis auslesen und Tabelle anlegen

-hans-
Beiträge gesamt: 748

28. Mär 2011, 23:04
Beitrag # 5 von 6
Beitrag ID: #467892
Bewertung:
(2894 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gunray,

falls Du noch appletechnisch unterwegs bist ... mit AS sind solch programm- oder betriebssystemübergreifende Aufgaben auch kein Problem ... (hiermit meine ich natürlich keine ID-Tabellen über mehrere Seiten ;-) )

Ausgabe dann z.B. als tabgetrennte Txt-Datei oder XML, die kannst Du ja immer noch in ID importieren ...

Gruß

Hans


als Antwort auf: [#467846]

Verzeichnis auslesen und Tabelle anlegen

-hans-
Beiträge gesamt: 748

30. Mär 2011, 12:06
Beitrag # 6 von 6
Beitrag ID: #467965
Bewertung:
(2833 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

als mein heutiger Sudoku-Ersatz ;-) ...

Schreibt eine tab-separierte-Txt-Datei (Auftraege.csv auf den Desktop; die sich leicht in ID einbinden ließe; um hier den Bogen zum ID-Script-Forum zu bekommen ;-) ) mit folgendem Aufbau:
Code
Auftragsnummer	Sorte	Auflage	Folie	Eingabedatum	Preis 
Auftragsnr Sorte 251 Folie. Mittwoch, 19. Mai 2010 9:43:12 Uhr 114,456
Auftragsnr Sorte 333 Folie Kopie 2. Mittwoch, 19. Mai 2010 9:43:12 Uhr 151,848
Auftragsnr Sorte 485 Folie Kopie. Mittwoch, 19. Mai 2010 9:43:12 Uhr 221,16
Auftragsnr Sorte 486 Folie Kopie 3. Mittwoch, 19. Mai 2010 9:43:12 Uhr 221,616
Auftragsnr Sorte 578 Folie Kopie 1. Mittwoch, 19. Mai 2010 9:43:12 Uhr 263,568
Auftragsnr Sorte 675 Folie Kopie 4. Mittwoch, 19. Mai 2010 9:43:12 Uhr 307,8
Auftragsnr Sorte 758 Folie Kopie 5. Mittwoch, 19. Mai 2010 9:43:12 Uhr 345,648
1626,096


Code
property xFactor : 0.456 --Preis pro Exemplar in Euro 

global thePriceList
set thePriceList to {}
global theJobString
set theJobString to ""
global theFolder
set theFolder to choose folder
global theNameList
set theNameList to list folder theFolder without invisibles

global theItemList
global theCreationDateList



my main()

on main()
my getModeDate()
my makeLists()
my createString()
my write2CsvFile()
end main

on getModeDate()
set theCreationDateList to {}
repeat with i from 1 to count of theNameList
set theNameItem to item i of theNameList
set thePdfAlias to ((theFolder as text) & theNameItem) as alias
try
set thePdfCreationDate to creation date of (info for (thePdfAlias)) as text
on error
set thePdfCreationDate to "Error"

end try
set end of theCreationDateList to thePdfCreationDate
end repeat
--return theCreationDateList
end getModeDate

on makeLists()
set theItemList to {{"Auftragsnummer", "Sorte", "Auflage", "Folie", "Eingabedatum", "Preis"}}
set {TID, AppleScript's text item delimiters} to {AppleScript's text item delimiters, "_"}
repeat with i from 1 to count of theNameList
set theJobList to {}
set theString to text 1 thru -4 of (item i of theNameList)
set theTextItems to every text item of theString
set counter to 0
repeat with j from 1 to count of theTextItems
set counter to counter + 1
if counter is equal to 3 then
set thePrice to ((((item j of theTextItems) as real) * xFactor) as text)
set end of thePriceList to (thePrice as real)
end if
set end of theJobList to (item j of theTextItems)
end repeat
set end of theJobList to (item i of theCreationDateList)
set end of theJobList to thePrice
set end of theItemList to theJobList
end repeat
set TID to AppleScript's text item delimiters

set addBill to 0
repeat with k from 1 to count of thePriceList
set getPrice to item k of thePriceList
set addBill to addBill + getPrice
end repeat
set end of theItemList to {"", "", "", "", "", addBill as text}
end makeLists

on createString()
set {TID, AppleScript's text item delimiters} to {AppleScript's text item delimiters, " "}
repeat with i from 1 to count of theItemList
set theJob to (item i of theItemList as text) & return
set theJobString to theJobString & theJob
end repeat
set TID to AppleScript's text item delimiters
end createString

on write2CsvFile()
set target_file to (((path to desktop folder) as text) & "Auftraege.csv")
set the open_target_file to open for access file target_file with write permission
set eof of the open_target_file to 0
write theJobString to the open_target_file starting at eof
close access the open_target_file
end write2CsvFile



als Antwort auf: [#467892]
X