Pages-Dokument mit Inhalt füllen

O

ozzyrocks

Mitglied
Thread Starter
Dabei seit
25.06.2006
Beiträge
68
Reaktionspunkte
0
Hallo,

ich habe ein Pages-Dokument, das eine fertig formatierte, leere Tabelle enthält. Diese würde ich jetzt gerne mit Daten aus einer Text-Datei füllen, am besten mit AppleScript oder Automator. (Oder gibt es da bessere Möglichkeiten?)
Ich habe allerdings keine Ahnung, wie das geht; mit Rumprobieren bin ich nicht weiter gekommen. Das Dictionary hat mir leider auch nicht weitergeholfen.

Gibt es eigentlich irgendwo eine gute Einführung in die Verwendung von AppleScript mit Pages/iWork? Im Pages-Handbuch steht zu diesem Thema nämlich gar nichts.

Edit: Mac OS X 10.4, Pages '08

Grüße
ozzyrocks
 
Zuletzt bearbeitet:
Ich würde eher eine gute Einführung zu AppleScript lesen, und mich gleich mit dem Skripteditor an die Pages-Bibliothek ranmachen.
 
Welche Einführung kannst du denn empfehlen? Die Grundzüge von AppleScript glaube ich verstanden zu haben. Allerdings wäre eine Anleitung hilfreich, die beschreibt, was man mit den Informationen in der Programm-Bibliothek anfängt.
 
Da bleibt nur der harte Weg des Selbsttrainings übrig ;).
Google nach Foren über applescript. Erst dort mit dem Suchbegriff 'Pages' hantieren, sonst unter Google kommt da logischerweise viel was nur mit 'Seiten' zu tun hat und nix mit Pages ;).

Als Anfang lässt sich schon ganz leicht (umständlich :D) etwas Text in ein Dokument einfügen. Ich würde so im stehgreif sagen, das die Tabelle mit Applescript erzeugt werden sollte, da es wahrscheinlich einfacher sein wird, als eine leere Tabelle im Dokument anzusprechen.

Ich fülle momentan Pages mit ein paar kleinen Textzeilen auf diese Art und Weise:

____ApplescriptCode-Anfang___
tell application "Pages"
tell body text of document 1 -- voraussetzung ist, das Pages mit einem leeren Dokument startet
make new paragraph at end with data "Heute ist Montag"
make new paragraph at end with data " "
make new paragraph at end with data "Wir testen einfach mal das Vorgehen ;)"
end tell
end tell
____ApplescriptCode-Ende___

Also einfach ein wenig rumprobieren, und auf Grund dieser Grundlage vielleicht den nächsten Schritt austesten. Make Box etc. Make Table, und was es nicht alles gibt. Aber eine direkte Quelle gibt es einfach noch nicht, zumal die Vorversion oft mit anderen Befehlen arbeitet als die aktuelle Pages-Version.
Foren sind stets das Hilfreichste was es gibt. Erst mit Google nach Foren suchen, und dort dann gezielt nach Pages und Co.


mit freundlichem Gruß, der kleine Blonde, glzm0
 
Danke für die Tipps!

Mithilfe der Pages-Bibliothek habe ich es jetzt geschafft, eine neue Tabelle zu erzeugen:

add table without header row

Ich konnte aber nicht herausfinden, wie ich die Anzahl der Zeilen/Spalten ändere oder etwas in die Tabelle einfüge, geschweige denn, wie ich Zellhöhe, -breite und Rahmen verändere.

Grüße
ozzyrocks
 
Wahrscheinlich mit dem attribut with properties {property1:"value", property2:"value"}. Mach dir mal im Pages eine Tabelle und lass dir mal von AppleScript die properties davon ausgeben mit properties of table 1 of document 1, freilich innerhalb eines tell app "Pages"-Blocks.
 
Ich habe die Tabelle mal von Hand mit Inhalt gefüllt, bei "properties of table 1" kommt aber nur Folgendes heraus:

{shadow:false, horizontal position:2.046111106873, stroke color:{0, 0, 0}, locked:0, opacity:100.0, placement:moving, rotation:0.0, name:"Unbenannte Tabelle", class:graphic, text fit:rectangle, wrap:center, containing page:page 1 of document id 11944879 of application "Pages", stroke width:1.0, id:1503904, shadow offset:missing value, width:12.347222328186, shadow opacity:missing value, shadow blur:missing value, extra space:12.0, height:2.64583325386, shadow angle:missing value, shadow color:missing value, vertical position:2.046111106873, containing layer:missing value}
 
So, ich wurschtel gerade seit 2 Stunden rum und es sieht tatsächlich so aus als wäre es noch nicht möglich, die Tabelle zu füllen.

Ein Chart kann man lustigerweise erstellen, MIT DATEN. Aber die Tabelle kann ich in keiner Weise ansprechen.

Muss es unbedingt eine Tabelle sein? Kannst Du uns erklären was Du in etwa vorhast ;) vielleicht lässt sich das auch mit Text und Tabulatoren oder Textboxen lösen.
 
So, NUN ABER :D

tell application "Pages"
tell (make new document at front with properties {template name:"Blank"})
add table data {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}} without header column and header row
add table data {{"A", "B", "C"}, {"D", "E", "F"}, {"G", "H", "I"}} with header column and header row
end tell
end tell

viel Spaß beim basteln Deiner Tabelle :)
, man war das ein Akt :)
 
Wow, vielen Dank!

Ich hatte mich schon damit abgefunden, dass ich Word nehmen müsste.

Warum zum Kuckuck ist das denn nirgends dokumentiert? Microsoft bietet für Word ein ausführliches Dokument zum Scripten mit AppleScript an. Aber die AppleScript-Implementation von Word 2004 ist ja völlig bescheuert. Da käme man ohne die Dokumentation nie im Leben drauf.

Gruß
ozzyrocks
 
Wie ändere ich jetzt die Eigenschaften der Tabelle?

Wenn ich folgendes mache:

add table data {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}} with properties {shadow:true}

, dann kommt folgende Fehlermeldung:

Expected end of line, etc. but found “{”.

Edit:
Alternative Idee: Da die Tabelle relativ komplex formatiert ist, u.A. mit verschieden dicken Rahmenlinien, wäre es doch einfacher, die Tabelle von Hand zu formatieren und dann per AppleScript mit Daten zu füllen (falls das möglich ist). Ich habe allerdings noch nicht rausgefunden, wie ich den "add table data {...}"-Befehl verändern muss, um den Inhalt einer bestehenden Tabelle zu verändern.
 
Zuletzt bearbeitet:
tell application "Pages"
tell (make new document at front with properties {template name:"Blank"})
add table data {{1, 2, 3, 11}, {4, 5, 6}, {7, 8, 9}} without header column and header row
-- verschiedene werte können gemeinsam gesetzt werden
set properties of table 1 to {rotation:160, shadow:true}
-- die Schattenwerte können aber erst (gemeinsam) gesetzt werden, nachdem der Schatten zuvor seperat gesetzt wurde
set properties of table 1 to {shadow color:{25000, 0, 65535}, shadow angle:120}
-- werte können auch einzeln gesetzt werden
set shadow opacity of table 1 to 90
end tell
end tell


So freundchen, nun aber ins Bett ;)
 
Was? Ins Bett? Jetzt schon? :)

Diese Idee war mir auch gekommen. Aber wie finde ich, falls in dem Dokument schon Tabellen vorhanden sind, raus, welche Nummer die Tabelle trägt? Kann ich da irgendwie eine Referenz auf die Tabelle o.Ä. erstellen?

Zu meinem Edit in Post #11 hast du keine Meinung? ;-) Falls nein, weißt du zufällig auch, wie ich die Eigenschaften der einzelnen Rahmenlinien verändere? Z.B. Alle n Spalten eine 2pt-Linie statt einer 1pt-Linie.

Und wie zentriere ich die Tabelle horizontal? Muss ich dazu die Seitenbreite rausfinden, halbieren, die halbe Tabellenbreite abziehen und das Ergebnis als "horizontal position" festlegen? Außerdem schient es, als akzeptiere Pages keine Änderung des Wertes "horizontal position", auch wenn es keine Fehlermeldung wirft.

Danke für deine Mühe!
 
heute ist Sauna angesagt :)

es wird also dauern bis ich mich darum kümmern kann.
Deine Edit kam zu spät, deswegen hab ich das nicht mehr gelesen :D.

Aber ja, man kann der Tabelle einen Namen geben, zudem hat jede Tabelle eine eindeutige ID. Du musst also zuvor eine Variable mit dem Tabellennamen oder der TabellenID anlegen. Dann kannst Du stets die passende Tabelle ansprechen.

Das mit der komplexen Formatierung wird nicht klappen, soweit ich den Syntax lesen kann. Ich glaube in diesem Falle wird es besser sein zuvor die Tabellen zu erstellen und dann zu füllen. Das Füllen habe ich auch nur ganz kurz angetestet und noch keinen erfolg gehabt.

Da Du die Tabellennamen nur zuweisen kannst, wenn Du welche mit Applescript erstellst (ich habe im PagesinfoFenster nirgends den Tabellennamen gefunden), musst Du wohl ein leeres Dokument mit 1 oder 2 oder 3 Tabellen mit Namen per Applescript erstellen. Dann das ganze von Hand manuell Formatieren und Speichern. Danach dann mit deinem normalen Applescript öffnen, Daten einfügen, drucken, speichern, etc ....

Das hat den Vorteil Du kannst die Tabellen von Hand positionieren. Die Tabellen lassen sich aber auch per AppleScript positionieren.

Für weitere Codeschnipsel und Ideen bitte folgenden Betrag auf Konto X überweisen
Stellste mich ein? Ich könnte noch ein wenig Geld nebenher gebrauchen :Pfeif:

Edit sagt zu Dir: "los, teil dem armen Kerl mit was Du vorhast. Vielleicht finden sich andere Lösungsansätze"
 
Zuletzt bearbeitet:
Für weitere Codeschnipsel und Ideen bitte folgenden Betrag auf Konto X überweisen
Stellste mich ein? Ich könnte noch ein wenig Geld nebenher gebrauchen

Äh, das Ganze ist quasi Non-Profit ;-) => Budget: EUR 0

Aber nochmals vielen Dank für deine Bemühungen. Ich krieg ja schon fast ein schlechtes Gewissen, wenn ich mir vorstelle, dass du den ganzen Tag nichts anderes machst, als für mich AppleScript zu reverse-engineeren.

Jetzt verrate ich dir endlich, was ich vor habe: Ich will aus einer noch näher zu bestimmenden Quelle Sudoku-Daten beziehen und diese in ein in Pages gelayoutetes Dokument übertragen. D.h. die von Hand formatierte Tabelle soll am Ende n-mal im Dokument vorkommen, natürlich mit Inhalt.
 
ok, na da hast Du ja ein wenig Glück, das ich auf Sudoku stehe. Ab und an gebe ich mich dem auch hin.
Warum die Tabelle n-mal in Pages unterbringen? Reicht es nicht das Dokument n-mal zu drucken oder willst Du verschiedene Rätselmöglichkeiten unterbringen, also nicht immer das selbe, sondern angenommen 10 Sudokus die jjeweils eine andere Lösung haben, in ein Dokument einbauen?
Wo wirst Du die Daten herbeziehen? So das das Rätsel auch noch Lösbar bleibt?
Es gibt für Indesign und Illustrator Plug-Ins die Sudokurätsel MIT Lösungsschablone (unsichtbar) erstellen :)

Aber das hilft mir zum Grübeln natürlich schon mal ein kleinwenig weiter :D
 
Ich habe eine Quelldatei, die Daten von n Rätseln enthält (natürlich lauter verschiedene Rätsel mit verschiedenen Lösungen). Ich will also am Ende lauter verschiedene Rätsel in dem Pages-Dokument haben.

Für die Lösbarkeit ist gesorgt. Wie die Quelldatei konkret aussehen wird, weiß ich allerdings noch nicht. D.h. weiß ich schon. Das ist im Moment eine Binärdatei, die die Daten in irgendeiner Form enthält. Ich habe mich allerdings noch nicht entschieden, ob ich diese Binärdateien direkt mit AppleScript einlese oder ob ich sie zuerst per irgendeiner anderen Skriptsprache in Plain-Text-Dateien konvertiere.

Und falls sich das jetzt so anhört, als wollte ich hier die Rätseldaten einer anderen Software klauen: Genau das will ich. Allerdings habe ich die Software gekauft (es handelt sich um "Astraware Sudoku" für Palm OS) und in manchen Situationen möchte ich die Rätsel lieber auf dem Papier lösen als auf dem PDA; Astraware Sudoku bietet aber leider keine Möglichkeit zum Drucken der Rätsel.

Und nein, ich will auch nicht für EUR 5 ein Sudoku-Heft kaufen. Das wäre ja langweilig ;-) (Außerdem habe ich nicht erwartet, dass das Scripten von Pages so problematisch sein würde. Da lässt sich das Binärformat deutlich leichter entschlüsseln.)
 
Zurück
Oben Unten