[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Script um 2 Items von CC Library auf eine Seite zu plazieren

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

Script um 2 Items von CC Library auf eine Seite zu plazieren

zm3k
Beiträge gesamt: 11

23. Nov 2020, 23:23
Beitrag # 1 von 11
Bewertung:
(15369 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hello liebes Forum,

ich bin ein Neuling in der AdobeScripting, habe aber Erfahrung mit VBA.

Ich habe schon bisschen herumgesucht aber nicht das gefunden was ich bräuchte.

Uns zwar ich habe 2 Items in der CC Library einmal ein Popup und einmal ein Button. Ich würde gerne das Popup plazieren und dann den Button, diesem dann einen Klickevent zuweisen mit "gehe zu Status : popup1 (Sodass er das Popup öffnet wenn es den empty zustand hat)

Der Button sollte auf einer eigenen Ebene ganz unten platziert werden (wenn ich mehrere Popups mit Buttons auf einer Ebene habe dann überlagern sich die Buttons mit den Popups und man sieht die Buttons über dem Popup) und sich aber trotzdem mit dem Klickevent auf das gerade platzierte Popup beziehen.

1. Ist verständlich was ich meine?
2. Ist das umsetzbar?
3. Ich hörte das man nicht auf die CC library zugreifen kann und kann ich eine normale Bibliothek ansprechen wenn diese Items drinnen sind als alternative?

Bin leider recht ratlos, bin über alle Tipps dankbar.

lg Michael
X

Script um 2 Items von CC Library auf eine Seite zu plazieren

zm3k
Beiträge gesamt: 11

24. Nov 2020, 08:27
Beitrag # 2 von 11
Beitrag ID: #577700
Bewertung:
(15321 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Es wäre auch ok wenn ich einfach nur wüsste wie ich Items von der Library ansprechen kann.

Lg Michael


als Antwort auf: [#577699]

Script um 2 Items von CC Library auf eine Seite zu plazieren

Uwe Laubender
Beiträge gesamt: 5314

24. Nov 2020, 09:27
Beitrag # 3 von 11
Beitrag ID: #577701
Bewertung:
(15298 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Michael,
ich würde zunächst mal eine InDesign-Bibliothekdatei anlegen, die entsprechenden Objekte reinladen und dann den gedachten Workflow "per Hand" durchspielen.

Danach kannst Du Dir im DOM das anschauen:

https://www.indesignjs.de/...latest/#Library.html
https://www.indesignjs.de/...Asset.html#d1e298539


Keinerlei Erfahrung habe ich damit:

The Adobe Creative Cloud Libraries API Is Available Now!
Siddharth Arora, Oct 21
https://medium.com/...able-now-642f0dee028


als Antwort auf: [#577699]

Script um 2 Items von CC Library auf eine Seite zu plazieren

TMA
Beiträge gesamt: 399

26. Nov 2020, 09:45
Beitrag # 4 von 11
Beitrag ID: #577742
Bewertung:
(14985 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Michael,
Du kannst ein Objekt aus einer Library, zumindest in AS, so platzieren:

place asset [assetObject] on [reference]

Vielleicht hilft dir das weiter, das sollte für JS ja ähnlich sein.

Gruß
TMA


als Antwort auf: [#577701]

Script um 2 Items von CC Library auf eine Seite zu plazieren

Uwe Laubender
Beiträge gesamt: 5314

26. Nov 2020, 10:04
Beitrag # 5 von 11
Beitrag ID: #577743
Bewertung:
(14977 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo TMA,
klar ist das, ich sag' mal relativ "einfach".
Wenn man bereits Erfahrung damit hat.

Deshalb habe ich ja die DOM-Doku für ExtendScript verlinkt.
Natürlich muss die *.indl-Datei erst mal überhaupt geladen und angesprochen werden, damit "Assets" verfügbar werden. Außerdem gibt's dann schon ein paar Feinheiten und kleine Überraschungen mit der Methode asset.placeAsset(), die man erst mal gut testen sollte.


als Antwort auf: [#577742]

Script um 2 Items von CC Library auf eine Seite zu plazieren

TMA
Beiträge gesamt: 399

26. Nov 2020, 13:27
Beitrag # 6 von 11
Beitrag ID: #577744
Bewertung:
(14927 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Dann möchte ich einmal etwas anders antworten und mich auf diese Sätze beziehen:
Zitat Bin leider recht ratlos, bin über alle Tipps dankbar.

Zitat Es wäre auch ok wenn ich einfach nur wüsste wie ich Items von der Library ansprechen kann.


Das kannst du über den Namen eines Items machen.

Genauso verhält es sich, wenn du mehrere Libraries hast. Die Lib kannst du auch über den Namen ansprechen.

Wenn ich z.B. die Referenz zu dem item "Popup" der Bibliothek "meineBibliothek" haben möchte, gehe ich in AppleScript so vor:
Code
-- Referenz zu der Bibliothek 
set libRef to item 1 of every library whose name = "meineBibliothek"
-- Referenz zum item "Popup"
set popupRef to item 1 of every asset of libRef whose name = "Popup"


Evtl. hilft dieses um in JavaScript zum gleichen Ziel zu kommen.
Da kann bestimmt ein JS Experte weiterhelfen.

Gruß
TMA


als Antwort auf: [#577700]

Script um 2 Items von CC Library auf eine Seite zu plazieren

zm3k
Beiträge gesamt: 11

8. Dez 2020, 08:17
Beitrag # 7 von 11
Beitrag ID: #577885
Bewertung:
(14295 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hello, danke für die vielen Infos. Im Moment mach ich es jetzt so das ich einfach die idms per placegun reinlade, das funktioniert auch soweit, mir wäre aber lieber es direkt reinzuladen ohne das ich es auf dem mauszeigen hätte.

Ich habe eher ein problem einen Layer auszuwählen.
Also ich versuche gerade eine If schleife zu machen wo ich mit

Code
app.document.layers.itemByName("popup") 


prüfen will ob ein layer vorhanden ist der "popup" heisst
wenn ja dann erstelle dort einen layer der popup1 heisst wobei 1 eine variable sein muss die ich später prüfen kann wähle diesen aus und platzier dort meine Idms.

Generell gehts mir eher darum das ich nicht so wirklich weiß wie ich Elemente ansprechen kann, die Indesign script guide Seite ist super umständlich oder ich bin noch zu unerfahren.

in Vba(excel) wäre es gewesen
Code
if workbook.name = "popup" then  
bla bla
else
bla bla
end if


Geplant wäre gewesen

1. prüfe ob layer "popup" vorhanden ist

= ja - dann erstelle in layer "popup" den layer "popup1" und plaziere dort popup.idms (problem da es mehrere popups sein können muss die zahl bei popup"1" eine variable sein die per abfrage erhöht wird), plaziere layer popup ganz nach oben

= nein - erstelle layer "popup" , erstelle layer "popup1" und lade popup.idms hinein, plaziere layer popup ganz nach oben.

(popup.idms ist ein Objekt mit einem "emty" zustand und einen "popup" zustand den ich mit einem klick status event umschalten könnte)

2. prüfe ob layer "buttons" vorhanden ist, und schiebe den layer ganz nach unten, selbes spiel wie Nr 1. nur das es eine button.idms ist
3. sage dem button.idms file, (das ist eine Schaltfläche) das er per klick den status von popup1 auf popup setzt.

So in diese richtung sollte es gehen, wenn mir jemand ansätze anbieten könnte wäre ich schon sehr dankbar.

Weitere Gedanken:
Wäre es möglich wenn ich ein Bild hätte welches ausgewählt ist daraus ein Popup zu machen indem ich das Bild kopiere und in dem neu erstellten popup(ist ein Ordner) in eine gewisse ebene reinlade, dann das bild von der größe so anpasse das es 80% die breite der seite hat dann im popup die vorhanden ramen dem bild an dem bild anpasse, dann wie oben auch einen button reinlade welche dann den status des popup von "emty" auf "popup" setzt ? also jetzt wo ich es aufgeschrieben habe musste es gehen , haha ^^

lg Michael


als Antwort auf: [#577742]

Script um 2 Items von CC Library auf eine Seite zu plazieren

Uwe Laubender
Beiträge gesamt: 5314

8. Dez 2020, 09:18
Beitrag # 8 von 11
Beitrag ID: #577886
Bewertung:
(14262 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Michael,
ob ein InDesign-Objekt vorhanden ist, kannst Du mit isValid prüfen.
Siehe auch hier die DOM-Dokumentation, die diese Eigenschaft beim Objekt Deiner Wahl aufführt. Im Falle des Objekts layer beispielsweise:

http://jongware.mit.edu/...c_Layer.html#isValid

In ExtendScript-Code ausgedrückt:

Code
/* 
Achte bitte auf die korrekte Syntax,
wenn Du ein Dokument ansprechen möchtest:

app.activeDocument
app.documents.item(0)
app.documents[0]

Nicht: app.document

*/

var myDoc = app.activeDocument ;
var myLayer = myDoc.layers.itemByName("popup");

/*
Nachfragen:
Ist die Ebene NICHT vorhanden?
Dann füge eine Ebene hinzu.

Neben dem Namen, lassen sich noch andere Eigenschaften über das Objekt definieren,
das die Methode add() als Argument nimmt.
Beispielsweise layerColor

Verneinung durch vorangestelltes !

*/
if( !myLayer.isValid )
{
myLayer =
myDoc.layers.add
(
{
name : "popup" ,
layerColor : UIColors.MAGENTA
}
);
}
else
{
myLayer.layerColor = UIColors.MAGENTA
};



als Antwort auf: [#577885]

Script um 2 Items von CC Library auf eine Seite zu plazieren

zm3k
Beiträge gesamt: 11

8. Dez 2020, 10:32
Beitrag # 9 von 11
Beitrag ID: #577887
Bewertung:
(14244 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hello Uwe,

danke für die Ínfos, das hilft schon mal weiter.

Hätte ein paar Fragen:

Was ist der unterschied zwischen artLayers und Layers

Wie verschiebe ich Layer zb das ich diesen an obester stelle hätte oder untester ? hat das mit dem index zu tun ?

Wie würde der Code aussehen wenn ich schauen möchte ob der layer vorhanden ist (mit isvalid das hab ich verstanden) doch wenn ich den gefundenen layer dann aktivieren

Bin für alle Infos dankbar

lg Michael


als Antwort auf: [#577886]

Script um 2 Items von CC Library auf eine Seite zu plazieren

Uwe Laubender
Beiträge gesamt: 5314

8. Dez 2020, 11:54
Beitrag # 10 von 11
Beitrag ID: #577893
Bewertung:
(14218 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Michael,
ich rate Dir ganz dringend zu einem Buch von Gregor Fellenz, um Dir die Grundlagen von ExtendScript und InDesign klarzumachen:

InDesign automatisieren
Gregor Fellenz
2. Auflage
https://www.indesignjs.de/auflage2/

So nebenbei:
artLayer gibt's in InDesign nicht.
Das Objekt gibt's nur in PhotoShop.


als Antwort auf: [#577887]

Script um 2 Items von CC Library auf eine Seite zu plazieren

zm3k
Beiträge gesamt: 11

8. Dez 2020, 14:05
Beitrag # 11 von 11
Beitrag ID: #577902
Bewertung:
(14193 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke, ja könnte ich mir mal ansehen eignetlich will ich nicht all so viel herum scripten, doch für ein Projekt ist das jetzt doch hilfreich.

Mein code schaut im moment so aus

Code
 
var myDoc = app.activeDocument ;
var mypoplayer = myDoc.layers.itemByName("popup");
var mybtnlayer = myDoc.layers.itemByName("button");

var mypop = ("/Users/zm3k_/Documents/Arbeit/qmm_emag_conniseurcircle_2020/Elemente/Popup/popup.idms");
var mybtn = ("/Users/zm3k_/Documents/Arbeit/qmm_emag_conniseurcircle_2020/Elemente/Popup/minus.idms");

//Schaut nach ob Popup layer vorhanden ist

if( !mypoplayer.isValid )
{
mypoplayer =
myDoc.layers.add
(
{
name : "popup" ,
layerColor : UIColors.MAGENTA
}
);
alert ("Popuplayer wurde erstellt");
myDoc.activeLayer = mypoplayer;
myDoc.placeGuns.loadPlaceGun(mypop);
}
else
{
mypoplayer.layerColor = UIColors.MAGENTA
alert("Popuplayer ist schon vorhanden")
myDoc.activeLayer = mypoplayer;
myDoc.placeGuns.loadPlaceGun(mypop);

};

//Schaut nach ob button layer vorhanden ist

if( !mybtnlayer.isValid )
{
mybtnlayer =
myDoc.layers.add
(
{
name : "button" ,
layerColor : UIColors.RED
}
);
alert ("Button Layer wurde erstellt");
myDoc.activeLayer = mybtnlayer;
myDoc.placeGuns.loadPlaceGun(mybtn);
}
else
{
mybtnlayer.layerColor = UIColors.RED
alert("Button Layer ist schon vorhanden")
myDoc.activeLayer = mybtnlayer;
myDoc.placeGuns.loadPlaceGun(mybtn);

};


Jetzt würde ich gern den Button Layer ganz nach unten schieben und den Popup ganz nach oben, denke das ich per index da werte vergeben müsste, doch der Syntax is mir noch bissl unklar.

Was auch angenehm wäre ist wenn ich nicht per mausklick die idms placen würde sondern einfach im dokument gedroped wird, also sowas wie place on page oder sowas, ich weiß nicht ob placegun nur das placen per mausklick erlaubt oder ob ich ihn anhand von positionen ihm das schon sagen kann.

Danke schon für die tolle Hilfe.


als Antwort auf: [#577893]
X