hilfdirselbst.ch
Facebook Twitter gamper-media
jekyll p
Beiträge: 2034
9. Nov 2017, 12:32
Beitrag #1 von 15
Bewertung:
(1533 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Datum in etikettierten Textfeld einfügen


Hallo Allerseits,
kann mir jemand sagen warum mein script nicht läuft?

Code
var alle = app.activeDocument.allPageItems;  
for (var i=0; i<alle.length; i++) {
if (alle[i].label == "datum") {
alle[i].contents = myDatum();
}
}

function myDatum()
{
var jetzt= new Date();
var monate = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
var datum = jetzt.getDate() + ". " + monate[jetzt.getMonth()] + " " + jetzt.getFullYear() + ", " + jetzt.getHours() + ":" + jetzt.getMinutes() + "Uhr";
return [datum];
}

Gruß Sándor


Hier auf der HDS, kann jeder was dazu lernen, sogar die die glauben alles (besser) zu wissen Wink
Das sollten WIR ALLE unterstützen: http://www.hilfdirselbst.ch/...m.cgi?do=membership;
Top
 
X
Martin Fischer  M  p
Beiträge: 11767
9. Nov 2017, 12:43
Beitrag #2 von 15
Beitrag ID: #560594
Bewertung:
(1528 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Datum in etikettierten Textfeld einfügen


Hallo Sándor,

zwei Dinge sind mir aufgefallen:

Zum einen versuchst Du dem content von allen PageItems mit dem entsprechenden Label, also auch graphischen Rahmen, Gruppen usw., den Datums-String zuzuweisen.

Das würde ich eingrenzen:
Code
if (alle[i].hasOwnProperty('contents') && alle[i].label == "datum") 


Zum anderen übergibt Deine Funktion einen Array:
Code
return [datum]; 


Der content braucht aber einen Wert vom Typ String.
Entweder so:
Code
return datum; 

oder so:
Code
alle[i].contents = myDatum()[0]; 


Viele Grüße
Martin
als Antwort auf: [#560592]
(Dieser Beitrag wurde von Martin Fischer am 9. Nov 2017, 12:47 geändert)
Top
 
jekyll p
Beiträge: 2034
9. Nov 2017, 12:47
Beitrag #3 von 15
Beitrag ID: #560595
Bewertung:
(1524 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Datum in etikettierten Textfeld einfügen


Hallo Martin,
so klappt ´s

Merci
Gruß Sándor


Hier auf der HDS, kann jeder was dazu lernen, sogar die die glauben alles (besser) zu wissen Wink
Das sollten WIR ALLE unterstützen: http://www.hilfdirselbst.ch/...m.cgi?do=membership;
als Antwort auf: [#560594] Top
 
jekyll p
Beiträge: 2034
9. Nov 2017, 13:24
Beitrag #4 von 15
Beitrag ID: #560596
Bewertung:
(1511 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Datum in etikettierten Textfeld einfügen


Hi Martin,
kann ich den (einen) Skript beim öffnen eine .idml Dokument automatisch ausführen lassen?
Gruß Sándor


Hier auf der HDS, kann jeder was dazu lernen, sogar die die glauben alles (besser) zu wissen Wink
Das sollten WIR ALLE unterstützen: http://www.hilfdirselbst.ch/...m.cgi?do=membership;
als Antwort auf: [#560594] Top
 
Martin Fischer  M  p
Beiträge: 11767
9. Nov 2017, 13:59
Beitrag #5 von 15
Beitrag ID: #560600
Bewertung:
(1491 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Datum in etikettierten Textfeld einfügen


Im Prinzip ja.
Du müsstest zunächst mal feststellen, was für ein Ereignis das Öffnen einer IDML-Datei ist. An dieses Ereignis (irgendwas mit After) könntest du die Ausführung deines Skripts hängen.

Ich würde Dir aber nahelegen, an die Ausführung des Skripts weitere Bedingungen und Abfragen zu knüpfen. Sonst besteht die Möglichkeit, dass das Skript öfter in solchen Fällen zuschlägt, in denen es nicht erwünscht ist, als andersrum.

Viele Grüße
Martin
als Antwort auf: [#560596]
(Dieser Beitrag wurde von Martin Fischer am 9. Nov 2017, 14:00 geändert)
Top
 
Uwe Laubender S
Beiträge: 3947
9. Nov 2017, 14:03
Beitrag #6 von 15
Beitrag ID: #560601
Bewertung:
(1489 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Datum in etikettierten Textfeld einfügen


Hallo Sándor,
ich nehme mal an, dass Dir ein einfaches "Ja" nicht genügt, oder?

Eine "Skizze" für ein Skript folgt weiter unten.

Schau aber zunächst mal hier rein:
http://www.hilfdirselbst.ch/..._P546750.html#546750

Dort zeige ich, wie sich ein beforeOpen-Event ausbeuten lässt. Oder aber die erste Instanz eines afterOpen-Events. Beide haben die Eigenschaft fullName, dessen Wert der vollständige Dateipfad der gerade öffnenden Datei ist. Im Erfolgsfall also Deine IDML-Datei.

Nimm mal an, dass Du den Wert von fullName auf die Endung der Datei prüfst. Also beispielsweise auf:

Code
\.idml$ 


Falls also die Prüfung positiv läuft, kann Dein Skript laufen nachdem der zugehörige afterOpen-Event erfolgreich gefeuert hat. Aber Vorsicht, der afterOpen-Event könnte sich mehrfach melden, einmal mit der Eigenschaft fullName, einmal ohne. Näheres dazu im verlinkten Thread.
*****
Mit herzlichem Gruß,
Uwe Laubender
als Antwort auf: [#560596] Top
 
jekyll p
Beiträge: 2034
9. Nov 2017, 14:32
Beitrag #7 von 15
Beitrag ID: #560602
Bewertung:
(1483 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Datum in etikettierten Textfeld einfügen


Danke Martin.

Hi Uwe,
danke schön werde ich es mal durch lesen und wahrscheinlich noch male dazu melden ;)
Gruß Sándor


Hier auf der HDS, kann jeder was dazu lernen, sogar die die glauben alles (besser) zu wissen Wink
Das sollten WIR ALLE unterstützen: http://www.hilfdirselbst.ch/...m.cgi?do=membership;
als Antwort auf: [#560601] Top
 
jekyll p
Beiträge: 2034
9. Nov 2017, 22:03
Beitrag #8 von 15
Beitrag ID: #560609
Bewertung:
(1427 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Datum in etikettierten Textfeld einfügen


so hier mein Bastelei:
Code
app.addEventListener("afterOpen",  meinDoOeffnen);   

function meinDoOeffnen(event)
if (event.userInteractionLevel == "INTERACT_WITH_ALL" && event.fullName == "macHD/wbf/mein.imdl"){
var alle = app.documents[0].allPageItems;
if (alle[i].hasOwnProperty('contents') && alle[i].label == "datum"){
alle[i].contents = myDatum();
}
}
}

function myDatum()
{
var jetzt= new Date();
var monate = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
var datum = jetzt.getDate() + ". " + monate[jetzt.getMonth()] + " " + jetzt.getFullYear() + ", " + jetzt.getHours() + ":" + jetzt.getMinutes() + " Uhr";
return datum;
}


Läuft natürlich nicht :(
Eine .imdl heisst nach dem öffnen "Unbenannt" und hat kein Pfad. Ich glaube in dem Fall ist eine FullName Prüfung sinnlos oder?
Habe mein.imdl auch als mein.indd öffnen lassen funzt mein script aber auch nicht.

Sollte ich eine neue Thema hierfür anfangen?
Gruß Sándor


Hier auf der HDS, kann jeder was dazu lernen, sogar die die glauben alles (besser) zu wissen Wink
Das sollten WIR ALLE unterstützen: http://www.hilfdirselbst.ch/...m.cgi?do=membership;
als Antwort auf: [#560601] Top
 
WernerPerplies
Beiträge: 2166
10. Nov 2017, 07:40
Beitrag #9 von 15
Beitrag ID: #560612
Bewertung:
(1352 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Datum in etikettierten Textfeld einfügen


Guten Morgen Sándor,

Zitat Sollte ich eine neue Thema hierfür anfangen?

Wäre sicherlich besser.

Zitat Ich glaube in dem Fall ist eine FullName Prüfung sinnlos oder?

Ja, und das gilt für jede, noch nicht gesicherte InDesign-Datei:
Document.saved == false!
Selbst dann, wenn Dich im Tab des Documentfensters der richtige Name anlächelt :-).


Verwende
Code
app.addEventListener("beforeOpen",  meinDoOeffnen); 


und die Sache sollte klappen.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler jetzt mit Vollwaschgang
Aktuelles
XING
als Antwort auf: [#560609] Top
 
jekyll p
Beiträge: 2034
10. Nov 2017, 09:11
Beitrag #10 von 15
Beitrag ID: #560618
Bewertung:
(1337 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Datum in etikettierten Textfeld einfügen


Hallo Werner,
danke für dein Antwort.

Antwort auf: und die Sache sollte klappen.

Ich hab´s nicht getestet aber denke, dass mein script erst nach dem öffnen die Werte des etikettierten Textfeldes ändern kann oder?
So müsste ich wohl erst mit beforeOpen die Name prüfen und dann mit afterOpen den Feld ändern.

Nach dem ich eine Nacht über die Sache geschlafen habe bin ich drauf gekommen, dass für mich besser wäre über eine Hotfolder zu arbeiten. Den kann ich mit applescript ansteuern, da kenne ich mich ein hauch besser aus :)
Gruß Sándor


Hier auf der HDS, kann jeder was dazu lernen, sogar die die glauben alles (besser) zu wissen Wink
Das sollten WIR ALLE unterstützen: http://www.hilfdirselbst.ch/...m.cgi?do=membership;
als Antwort auf: [#560612] Top
 
Uwe Laubender S
Beiträge: 3947
10. Nov 2017, 09:19
Beitrag #11 von 15
Beitrag ID: #560619
Bewertung:
(1334 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Datum in etikettierten Textfeld einfügen


Hallo Sándor,
Du hast außerdem einen Tippfehler drin.
Das Ding heißt idml und nicht imdl. Da kann der Ausdruck ja nichts finden.
*****
Mit herzlichem Gruß,
Uwe Laubender
als Antwort auf: [#560618] Top
 
WernerPerplies
Beiträge: 2166
10. Nov 2017, 09:36
Beitrag #12 von 15
Beitrag ID: #560620
Bewertung:
(1322 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Datum in etikettierten Textfeld einfügen


Hallo Sándor,

Zitat Ich hab´s nicht getestet aber denke, dass mein script erst nach dem öffnen die Werte des etikettierten Textfeldes ändern kann oder?


Na ja, wenn das Event wirklich vor dem Öffnen gefeuert wird, kannst Du natürlich nicht auf den Inhalt der Datei zugreifen.

Zitat So müsste ich wohl erst mit beforeOpen die Name prüfen und dann mit afterOpen den Feld ändern.


Ja, das denke ich auch.

Aber das sollte kein Problem sein, solange Du mit der gleichen Target-Engine arbeitest, kannst Du Informationen über ein globales Object/globale Variable weiterreichen.

Zitat Nach dem ich eine Nacht über die Sache geschlafen habe bin ich drauf gekommen, dass für mich besser wäre über eine Hotfolder zu arbeiten.


Ok, mit Apple-Script kenne ich mich nicht aus, aber die Arbeit mit Hotfoldern hat auch seine Tücken, aber ich arbeite selbst sehr gerne damit, weil ich so UI-Aufgaben und Dienstskripte entkoppeln kann.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler jetzt mit Vollwaschgang
Aktuelles
XING
als Antwort auf: [#560618] Top
 
WernerPerplies
Beiträge: 2166
10. Nov 2017, 09:39
Beitrag #13 von 15
Beitrag ID: #560621
Bewertung:
(1319 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Datum in etikettierten Textfeld einfügen


Guten Morgen Uwe,

:-)
wer wird denn so kleinlich sein, aber wenn schon, denn schon:

Prüfe dann mal die Klammern.

Ach ja, noch ein Hinweis, für Arbeiten mit Datumsangaben könnte auch dieses Skript interessant sein:

WpsInsertDates – Skript zum Einfügen von berechneten Daten in Adobe InDesign Dateien

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler jetzt mit Vollwaschgang
Aktuelles
XING
als Antwort auf: [#560619]
(Dieser Beitrag wurde von WernerPerplies am 10. Nov 2017, 09:45 geändert)
Top
 
Uwe Laubender S
Beiträge: 3947
10. Nov 2017, 10:30
Beitrag #14 von 15
Beitrag ID: #560625
Bewertung:
(1305 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Datum in etikettierten Textfeld einfügen


Hallo Sándor,
folgender Vorschlag für die Prüfung:

Code
event.fullName.match(/\.idml$/i); 


Findet alle Dateinamen, die mit ".idml" enden.
Unabhängig von Groß/Klein-Schreibung.
*****
Mit herzlichem Gruß,
Uwe Laubender
als Antwort auf: [#560618]
(Dieser Beitrag wurde von Uwe Laubender am 10. Nov 2017, 10:31 geändert)
Top
 
jekyll p
Beiträge: 2034
10. Nov 2017, 12:01
Beitrag #15 von 15
Beitrag ID: #560631
Bewertung:
(1286 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Datum in etikettierten Textfeld einfügen


Antwort auf [ Uwe ] Das Ding heißt idml und nicht imdl. Da kann der Ausdruck ja nichts finden.

Das ist eine Krücke mit meine Flüchtigkeit Fehler.

Antwort auf [ Werner ] Prüfe dann mal die Klammern.

da lobe ich mein ScriptDebugger (für applescript), der hätte so den script nicht übersetzt.

Danke für Euere Hilfe.
Gruß Sándor


Hier auf der HDS, kann jeder was dazu lernen, sogar die die glauben alles (besser) zu wissen Wink
Das sollten WIR ALLE unterstützen: http://www.hilfdirselbst.ch/...m.cgi?do=membership;
als Antwort auf: [#560625] Top
 
X