Das mit Photoshop ist eine Vorgabe, auf die ich keinen Einfluss habe. Ist aber okay, da man hier mit den Bildern flexibler ist. Ich benutze in PS auch die (kümmerlichen) Formatvorlagen. Es ist schon ein Ärgernis, dass es hier keine GREPs in den Absatzformaten implementiert sind. Ich habe drei Versionen (2015, 2017 und 2018) arbeite aber überwiegend mit der 2017er (110.032). Ich möchte auch von dem Plan jetzt nicht abweichen: es muss ein Script sein, da ich per script die einzelnen Elemente des Newsletters erstellen möchte. Also nicht erst Muster-Dateien aufmachen und diese dann manuell modifizieren. Es ist eine immer wierderkehrende Aufgabe, die routinemäßig und schnell erledigt werden muss. Schritt 1 Datei wird mit den nötigen Ebenengruppen, Masken, Stilen und Ebenen (überwiegend Texte) erstellt Schritt 2 per dialog werden die aktuellen Inhalte abgefragt Schritt 3 die default-Inhalte werden mit den eingegebenen Werten ersetzt (und hier kommt RegEx ins Spiel!) Schritt 4 das Dokument soll (web-optimiert) an eine bestimmte Stelle gespeichert werden bereits erstellter Teil teilweise erstellter Teil schwieriger Teil Ich bleibe aber am Ball. Hier das script: (bin mir im Klaren, dass es eine kürzere Möglichkeit gäbe, aber in dieser Form kann ich das auch nachvollziehen!) #target photoshop-110.032 // *********************************** Variablen bereitstellen *********************************** var myDoc = app.activeDocument; var allesGruppe = myDoc.layerSets[0]; //Variablen für Ebenen-Gruppen var TextGruppe = allesGruppe.layerSets.getByName('Texte'); var waGruppe = allesGruppe.layerSets.getByName('Veredelung'); var buttonsGruppe = allesGruppe.layerSets.getByName('Buttons und Störer'); var preisGruppe = allesGruppe.layerSets.getByName('Preis'); var streichpreisGruppe = allesGruppe.layerSets.getByName('Streichpreis'); //Variablen für Ebenen var titleLayer = TextGruppe.layers.getByName("Überschrift"); var bulettLayer = TextGruppe.layers.getByName("Stichworte"); var productLayer = TextGruppe.layers.getByName("Produkt"); var prizeLayer = preisGruppe.layers.getByName("Preis"); var spLayer = streichpreisGruppe.layers.getByName("Streichpreis"); var waOhne = waGruppe.layers.getByName("ohne"); var waWerbedruck = waGruppe.layers.getByName("Werbedruck"); var waLasergravur = waGruppe.layers.getByName("Lasergravur"); var waEtikett = waGruppe.layers.getByName("Etikettierung"); var waPraegung = waGruppe.layers.getByName("Werbepraegung"); //Alle Buttons ausblenden und ihre Namen in ein Array speichern var nButton = buttonsGruppe.layers.length; var buttonArray = []; for (var i=0;i<nButton;i++){ buttonsGruppe.layers.visible = false; buttonArray.push(buttonsGruppe.layers.name); } var buttonsName = buttonArray.toString().split(","); // *********************************** Formularaufbau *********************************** function myInput () { myWindow = new Window ('dialog {orientation: "column", alignChildren: ["center", "left"]}', "NEWSLETTER TEASER", undefined, {closeButton: true, borderless: false}); myWindow.margins = [5,5,5,5]; myWindow.alignChildren = "left"; var obenGruppe = myWindow.add('group {orientation: "row", alignChildren: [" ", "left"]}'); obenGruppe.margins = [10,10, 10,10]; //-------------------- Newsletter Überschrift -------------------- var ersteReihe = obenGruppe.add("panel"); ersteReihe.orientation = "row"; ersteReihe.alignment = "left"; ersteReihe.add ("statictext", undefined, "NL-Überschrift:"); nlUeberschrift = ersteReihe.add ("edittext", [0,0,200,20], undefined, {multiline: false, scrolling: false}); nlUeberschrift.text = "Überschrift"; nlUeberschrift.active = true; //-------------------- Newsletter Stichworte -------------------- var zweiteReihe = obenGruppe.add("panel"); zweiteReihe.alignment = "left"; zweiteReihe.add ("statictext", undefined, "NL-Stichworte:"); var bulletGroup = zweiteReihe.add("group {orientation: 'column'}"); nlStichworte1 = bulletGroup.add ("edittext", [0,0,200,20], undefined, {multiline: false, scrolling: false}); nlStichworte2 = bulletGroup.add ("edittext", [0,0,200,20], undefined, {multiline: false, scrolling: false}); nlStichworte3 = bulletGroup.add ("edittext", [0,0,200,20], undefined, {multiline: false, scrolling: false}); nlStichworte1.text = "Neu 1";3 nlStichworte2.text = "Neu 2"; nlStichworte3.text = "Neu 3"; nlStichworte1.active = false; nlStichworte2.active = false; nlStichworte3.active = false; var mitteGruppe = myWindow.add('group {orientation: "row", alignChildren: ["center", "left"]}'); mitteGruppe.margins = [10,10, 10,10]; //-------------------- Newsletter Artikelbezeichnung -------------------- var dritteReihe = mitteGruppe.add("panel"); dritteReihe.orientation = "row"; dritteReihe.alignment = "left"; dritteReihe.add ("statictext", undefined, "Artikelbezeichnung:"); ArtName = dritteReihe.add ("edittext", [0,0,200,20], undefined, {multiline: false, scrolling: false}); ArtName.active = false; //-------------------- Newsletter Artikelpreis -------------------- var artikelPreisGruppe = dritteReihe.add ("group") artikelPreisGruppe.add ("statictext", undefined, "Artikelpreis:"); ArtPreisEuro = artikelPreisGruppe.add ("edittext", [0,0,50,20], undefined, {multiline: false, scrolling: false}); ArtPreisEuro.text = "Euro"; ArtPreisEuro.active = false; ArtPreisCent = artikelPreisGruppe.add ("edittext", [0,0,50,20], undefined, {multiline: false, scrolling: false}); ArtPreisCent.text = "Cent"; ArtPreisCent.active = false; //ArtPreis.inputType="numberDecimal|numberSigned"; //-------------------- Newsletter Streichpreis -------------------- dritteReihe.add("statictext", undefined, "Streichpreis:"); streichPreisGroup = dritteReihe.add("group"); var streichPreisJA = streichPreisGroup.add ("radiobutton", undefined, "ja"); streichPreisJA.value = false; var streichPreisNEIN = streichPreisGroup.add ("radiobutton", undefined, "nein"); streichPreisNEIN.value = true; streichPreisGroup.alignChildren = "left"; var untenGruppe = myWindow.add('group {orientation: "row"}'); untenGruppe.margins = [10,10,10,10]; //-------------------- Newsletter Werbeanbringung -------------------- var fuenfteReihe = untenGruppe.add("panel"); fuenfteReihe.orientation = "column"; fuenfteReihe.alignment = "left"; fuenfteReihe.add("statictext", undefined, "Werbeanbringung:"); radioButtonGroupWA = fuenfteReihe.add("group {orientation: 'column'}"); radioButtonGroupWA.alignment = "left"; var druck1 = radioButtonGroupWA.add ("radiobutton", undefined, "keine möglich"); druck1.value = false; var druck2 = radioButtonGroupWA.add ("radiobutton", undefined, "Werbedruck"); druck2.value = true; var druck3 = radioButtonGroupWA.add ("radiobutton", undefined, "Lasergravur"); druck3.value = false; var druck4 = radioButtonGroupWA.add ("radiobutton", undefined, "Etikettierung"); druck4.value = false; var druck5 = radioButtonGroupWA.add ("radiobutton", undefined, "Werbeprägung"); druck5.value = false; radioButtonGroupWA.alignChildren = "left"; //-------------------- Newsletter Buttons -------------------- sechsteReihe = untenGruppe.add("panel"); sechsteReihe.alignment = "left"; sechsteReihe.add("statictext", undefined, "Buttons:"); buttonCheckGroup = sechsteReihe.add( "group {orientation: 'column'}"); var buttonCheck1 = buttonCheckGroup.add ("checkbox", undefined, "Nachhaltig"); buttonCheck1.value = false; var buttonCheck2 = buttonCheckGroup.add ("checkbox", undefined, "Made in Germany"); buttonCheck2.value = false; var buttonCheck3 = buttonCheckGroup.add ("checkbox", undefined, "Made in EU"); buttonCheck3.value = false; var buttonCheck4 = buttonCheckGroup.add ("checkbox", undefined, "Prozente"); buttonCheck4.value = false; var buttonCheck5 = buttonCheckGroup.add ("checkbox", undefined, "Störer"); buttonCheck5.value = false; var buttonCheck6 = buttonCheckGroup.add ("checkbox", undefined, "Lasergravur"); buttonCheck6.value = false; var buttonCheck7 = buttonCheckGroup.add ("checkbox", undefined, "Express 48h/72h"); buttonCheck7.value = false; buttonCheckGroup.alignChildren = "left"; //-------------------- Newsletter Bestätigung -------------------- var letzteReihe = myWindow.add("group"); letzteReihe.margins = [10,10,10,10]; letzteReihe.alignment = "center"; var btnOk = letzteReihe.add ("button", undefined, "OK"); var btnCancel = letzteReihe.add ("button", undefined, "Cancel"); // -------------------- Was passieren soll, wenn man auf OK drückt-------------------- btnOk.onClick = function () { //************************************ //die Funktion mit der Formularauswertung aufrufen //************************************ validation(); myWindow.close(); } // -------------------- Was passieren soll, wenn man auf CANCEL drückt-------------------- btnCancel.onClick = function () { myWindow.close(); } myWindow.show (); } // *********************************** Validierung *********************************** function validation(){ //Auslesen der markierten Werbeanbringung mit einer FOR-Schleife var butNumWA = radioButtonGroupWA.children.length; for (var i=0; i<butNumWA; i++){ if (radioButtonGroupWA.children.value == true) { var myRadioButtonWA = i } }; //Auslesen des Streichpreises mit einer FOR-Schleife var butNumSP = streichPreisGroup.children.length; for (var i=0; i<butNumSP; i++){ if (streichPreisGroup.children.value == true) { var myStreichPreis = i } }; //Auslesen des Streichpreises mit einer FOR-Schleife var butNumB = buttonCheckGroup.children.length; myButton = []; for (var i=0; i<butNumB; i++){ if (buttonCheckGroup.children.value == true) { myButton.push(buttonCheckGroup.children.text); } }; myTitle = nlUeberschrift.text ; myBullet1 = nlStichworte1.text; myBullet2 = nlStichworte2.text; myBullet3 = nlStichworte3.text; myWA = radioButtonGroupWA.children[myRadioButtonWA].text; myArtName = ArtName.text ; myArtPrizeEuro = ArtPreisEuro.text; myArtPrizeCent = ArtPreisCent.text; mySP = streichPreisGroup.children[0].value; numBT = myButton.length; myBT = myButton.toString().split(","); //************************************ //die Funktion mit den Eingabezuweisungen aufrufen //************************************ zuweisungen(); } function zuweisungen(){ titleLayer.textItem.contents = myTitle; productLayer.textItem.contents = myArtName; bulettLayer.textItem.contents = "• " + myBullet1 + "\r" + "• " + myBullet2 + "\r" + "• " + myBullet3; prizeLayer.textItem.contents = "ab " + myArtPrizeEuro + "," + myArtPrizeCent + " €"; if (mySP == true){ spLayer.visible = true; spLayer.textItem.contents = prompt("alter Preis: ", myArtPrizeEuro + "." + myArtPrizeCent) } else(spLayer.visible = false); // Ausgewählte Button-Ebenen sichtbar machen for (var n=0;n<numBT;n++){ buttonsGruppe.layers.getByName(myBT ).visible = true; } for (var i=0; i<radioButtonGroupWA.children.length;i++) { waGruppe.layers.visible = false; //alert(radioButtonGroupWA.children.value); switch(radioButtonGroupWA.children.value){ case true: waGruppe.layers.visible = true; } } } myInput (); Und hier noch ein separates script für die Erstellung des Dokumentes (ist noch nicht eingebunden, da in Testphase): function createDocument() { while(app.documents.length){ app.activeDocument.close() } var startRulerUnits = app.preferences.rulerUnits; var startTypeUnits = app.preferences.rtypeUnits; var startDisplayDialogs = app.displayDialogs; app.preferences.rulerUnits = Units.PIXELS; app.preferences.typeUnits = TypeUnits.PIXELS; app.displayDialogs = DialogModes.NO app.documents.add(600, 320, 72, prompt("Geben Sie bitte den Dokumentennamen ein", "SF_DV_TopTeaser"), NewDocumentMode.RGB) myDoc = app.activeDocument; createLayerSets(); } function createLayerSets(){ topLayerSet = myDoc.layerSets.add(); topLayerSet.name = "alles"; var layerSetsList = new Array("Texte", "Veredelung", "Buttons_und_Stoerer", "Weitere_Farben", "Preis", "Streichpreis", "PRODUKTE", "HINTERGRUND"); layerSetsList.reverse(); for (var i=0;i<layerSetsList.length;i++){ var LS = topLayerSet.layerSets.add(); LS.name = layerSetsList; } //maskLayerset(); }
... View more