[GastForen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Forenindex -- Lesezeichen

15 Lesezeichen für javascript

|| 2 Scripte automatisch hintereinander ausführen ?
scriptdir = app.scriptPreferences.scriptsFolder;

app.doScript (File (scriptdir + "/FindChangeByList.jsx"));
app.doScript (File (scriptdir + "/Mehrfachfarbfelder löschen.jsx"));

fr. gr.

Peter
...
Peter Kahrel
17. Okt 2009, 12:09
Absatz mit bestimmtem Absatzformat suchen, markieren und ausschneiden
Hallo Uli,

ganz geschwinde zumindest eine Antwort auf diese Frage.

Antwort auf: gibt es im Netz irgendwo eine komplette Referenz für InDesign Javascript?


Die Referenz im CHM- und im HTML-Format findest Du in InDesign JavaScript Help.


Versuche Copy, Cut & Paste möglichst zu vermeiden und verwende statt dessen den duplicate- bzw. den move-Befehl:

Zu kopierenden/verschiebenden Text adressieren;
Ziel bestimmen;
dorthin transportieren
...
Martin Fischer
24. Jan 2011, 18:48
|| Dropdown Dialog mit den UI-Farben
The first thing that comes to mind in these lines:

var doc = app.documents[0];
var dialogNames = ["Türkis", "Orange", "Rot"];
var colorValues = [UIColors.TEAL, UIColors.ORANGE, UIColors.RED];

is that doc, dialogNames, and coloValues are not variables, but constants. So it would seem better to decalre as such:

const doc = app.documents[0];
const dialogNames = ["Türkis", "Orange", "Rot"];
const colorValues = [UIColors.TEAL, UIColors.ORANGE, UIColors.RED];

The advantage of using const is that constants cannot be redefined, protecting the contents of the defined constants.

As to the readability of variable names, if you want to distinguish them from InDesign's properties and methods, then why use the same naming convention of space-less title case with initial lower case (as in dialogNames)? I would make sure that my variables are easily recognisable as my own. For example, for variable and function names I've been using dialog_names: underscores for spaces, no capitals. No confusion.

Regards,

Peter
...
Peter Kahrel
16. Okt 2009, 14:04
Indesign CS4 - Tabellen
Hallo,

Antwort auf: - Außerdem möchte ich der Tabelle einen Tabellenstil zuweisen und alle Abweichungen vom Stil in den Zellenformaten löschen.


Schau mal in Allen Tabellen ein Zellenformat zuweisen – per Script?

Antwort auf: - Jetzt möchte ich dem Absatz, an dem die Tabelle im Text verankert ist, ein bestimmtes Absatzformat zuweisen.


Auch das ließe sich per Skript erledigen.
Etwa so:
Code
var myParaStyle = 'Tabellen'; // Name des Absatzformats für die Absätze in welchen Tabellen enthalten sind 

if (app.activeDocument.paragraphStyles.itemByName(myParaStyle).isValid)
{
var myTables = app.activeDocument.stories.everyItem().tables.everyItem().getElements();
for ( var i = 0; i < myTables.length; i++ )
myTables[i].storyOffset.appliedParagraphStyle = myParaStyle;
}
else
alert('Absatzformat \"' + myParaStyle + '\" nicht vorhanden!');


In der Zeile var myParaStyle = 'Tabellen'; gibst Du den Namen des Absatzformats für die Absätze mit Tabellen an.
...
Martin Fischer
16. Okt 2009, 16:52
[Javascript] Einstellungen eines Skripts speichern
Hi,

ah, habe gar nicht bemerkt, dass es da eine Einstellung gibt. Ich habe das jetzt aber so gelöst, dass die Einstellungen eine Hierarchiestufe höher gespeichert werden:

Code
// Voreinstellungen laden und speichern  
// 2007-10-05 Wolfgang Reszel
//
// - Am Anfang eines Skripts muss initPreferences() aufgerufen werden
// - Danach können mit Preferences.xxx = yyy, Preferences.yyy = zzz ...
// die Standardeinstellungen festgelegt werden
// - Es folgt readPreferences(), welches die Einstellungsdatei ausliest
// und das Object Preferences entsprechend ändert
// - Es können nun Preferences-Objekte verändert und auch neue angelegt werden
// - Mit writePreferences() wir das komplette Preferences-Objekt in die
// Einstellungsdatei geschrieben
//
// Die Einstellungsdatei befindet sich eine Hierarchiestufe höher als das
// Skript und dort im Preferences-Ordner. Hier ein Beispiel:
// Skript: ~/Library/Preferences/Adobe InDesign/Version 5.0/Scripts/Scripts Panel/Skript.jsx
// Einstellungsdatei: ~/Library/Preferences/Adobe InDesign/Version 5.0/Scripts/Preferences/Skript.preferences

function initPreferences() {
scriptFile = File($.fileName);
scriptName = scriptFile.name.match(/^.*\./g).toString();
preferencesFile = File(scriptFile.parent.path.toString() + "/Preferences/" + scriptName + "preferences");
preferencesFile.encoding = "UTF-8";
Preferences = new Object();
}

function readPreferences() {
if (preferencesFile.open("r")) {
try {
var evaluated = eval(preferencesFile.read());
if (evaluated) Preferences = evaluated;
} catch (e) {}
}
preferencesFile.close();
}

function writePreferences( ) {
if (!preferencesFile.parent.exists) {preferencesFile.parent.create();}
if (preferencesFile.open("w")) {
preferencesFile.writeln(Preferences.toSource());
}
preferencesFile.close();
}

...
Wolfgang Reszel
5. Okt 2007, 17:28
Tabellenbreite proportional skalieren
Hallo Gerald,

aus aktuellem Anlaß (weil ich's grad selbst so brauche), habe ich in Deinem Skript eine kleine Modifikation gemacht:

Wenn die Tabelle in einem Textrahmen platziert ist, wird im Dialogfeld die Breite des Textrahmens als Ziel für die Gesamtbreite der Tabelle vorgeschlagen.

Andernfalls (z.B. wenn die Tabelle in einer Tabellenzelle platziert ist) wird weiterhin, wie in Deinem Skript, die aktuelle Tabellenbreite eingeblendet.

Code
bGoOn = true; 
aTable = app.selection[0];
if (aTable.constructor.name != "Table") {
aTable = aTable.parent;
if (aTable.constructor.name != "Table") {
aTable = aTable.parent;
if (aTable.constructor.name != "Table") {
alert("Es muss ein Text in einer Zelle markiert sein");
bGoOn = false;
}
}
}
if (bGoOn) {
nc = aTable.columns.length;
tWidth = 0.0;
for (n=0; n < nc; n++) {
tWidth += aTable.columns[n].width;
}
// die Tabelle befindet sich in einem Textrahmen
if (aTable.parent.constructor.name == "TextFrame") {
tfBounds = aTable.parent.geometricBounds;
// vorgeschlagener Wert für die Gesamtbreite der Tabelle = Breite des Textrahmens
myValue = tfBounds[3] - tfBounds[1];
}
else {
// vorgeschlagener Wert für die Gesamtbreite der Tabelle = aktuelle Tabellenbreite
myValue = tWidth;
}
var myDialog = app.dialogs.add({name:"Tabellenbreite"});
with(myDialog.dialogColumns.add()){
var nuWidthField = measurementEditboxes.add({editValue:(2.83465 * myValue), editUnits:MeasurementUnits.millimeters, smallNudge:0.5});
}

var myResult = myDialog.show();
if(myResult == true){
var nuWidth = nuWidthField.editValue * 0.35278;
myDialog.destroy();
scaleClm = nuWidth / tWidth;
for (n=0; n < nc; n++) {
aTable.columns[n].width = scaleClm * aTable.columns[n].width;
}
}
else{
myDialog.destroy();
}
}

...
Martin Fischer
17. Sep 2007, 09:25
frage an die scriptgelehrten
> Deutschsprachige Literatur zu diesem Thema ist m.W. derzeit noch nicht verfügbar.

Nun liegt die deutsche Übersetzung von Peter Kahrels "Scripting InDesign with JavaScript" als TecFeed bei O’Reilly zum Download (als PDF-Datei) vor:

InDesign mit JavaScript automatisieren
...
Martin Fischer
15. Aug 2007, 10:21
Neuer Lieblings-Shortcut
Ich habe ein neues Lieblings-Skript auf F2 liegen:

Code
if (app.layoutWindows[0].transformReferencePoint == AnchorPoint.CENTER_ANCHOR) { 
app.layoutWindows[0].transformReferencePoint = AnchorPoint.TOP_LEFT_ANCHOR;
} else {
app.layoutWindows[0].transformReferencePoint = AnchorPoint.CENTER_ANCHOR;
}


Wenn der Bezugspunkt nicht in der Mitte liegt, wird er in die Mitte gesetzt. Wenn er doch in der Mitte liegt, wird er auf links oben gesetzt.
Es schaltet also letztlich zwischen oben links und zentriert hin und her.

Nur getestet gegen CS3.

Share and Enjoy ;)
...
Gerald Singelmann
2. Aug 2007, 14:17
Datumsfunktion in Indesign
Hier noch ein kleines Skript, welches das aktuelle Datum just an der Einfügestelle einfügt.

Code
// insertDate.jsx 

if (app.selection.length == 0 || app.selection[0].constructor.name != "InsertionPoint")
exit();

app.selection[0].contents = catchDate();

function catchDate()
{
var d = new Date();
var myMonth = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
return d.getDate() + ". " + myMonth[d.getMonth()] + " " + (d.getYear()*1 +1900);
}


Das Skript fügt das aktuelle Datum dann ein, wenn der Cursor im Text blinkt, ohne daß etwas markiert ist.
...
Martin Fischer
19. Jul 2007, 08:23
Datumsfunktion in Indesign
Hallo,

Hier noch ein Skript von Dave Saunders aus dem Adobe-Forum. Aber ich glaube da gibt es noch ein anderes welches mir aber jetzt nicht mehr einfällt. Beim diesem Skript hier wird ein Zeichenformat namens »CurrentDate« vorausgesetzt. Beim Ausführen des Skripts wird bei allen Instanzen, die mit diesem ZF formatiert sind, das aktuelle Datum eingefügt. (Siehe erste Zeilen Auskommentierung im Skript)

Code
//DESCRIPTION: Update Date in Active Document  

/*
Updates all instances of current date in a document to reflect the
actual date when the script is run. Depends on character style named
"CurrentDate" -- does nothing if document lacks said style.
*/

if (app.documents.length == 0) { exit() }
myDoc = app.activeDocument; //Global
var myStyle = myDoc.characterStyles.item("CurrentDate");
if (myStyle == null) { exit () }

// If we get here, we have work to do
var myDate = getDateString();

// Use Find/Change across document to update date:
app.findPreferences = app.changePreferences = null;
myDoc.search("", false, false, myDate, {appliedCharacterStyle:myStyle});

function getDateString() {
var today = new Date();
var myDateString = today.toLocaleDateString();
myParts = myDateString.split(" 0");
if (myParts.length != 1) {
myDateString = myParts[0] + " " + myParts[1];
}
return myDateString.slice(0,-5) + "," + myDateString.slice(-5);
}


Hier noch ein weiterer Link dazu:
http://jsid.blogspot.com/...ork-interfering.html

InDesign Guru Branislav Milic hat im InDesign-Secrets-Blog folgende interessante Idee:

Zitat To insert the date you can also do this:
1. Create a Word file and choose Insert > Date & Time > choose a style and then check the Update automatically box.
2. Save the Word file
3. Import the Word file in InDesign but keep the link with the external Word file alive (in ID’s Preferences)
4. If you want to update the date, just open the Word file and save it, the automatic date is updated.
5. ID will react “Modified Link”. Just update it.
6. The same Word file can be then used in many other ID files as THE external link which provides a date updated (almost) live.


Und hier gibt es die Datum-Skripts von Dave Saunders:
http://pdsassoc.com/...oads/DateScripts.zip
http://www.pdsassoc.com/...=downloads/index.php

Gruß,
Sacha
...
Sacha Heck
18. Jul 2007, 23:58
GREP lernen
Vielen Dank, das war ein weiterer guter Tip.

Der Autor des Skriptes weiß um seinen Bug, und will ihn demnächst beheben.

Er gibt aber einen Workaround an, der meiner Meinung nach funktioniert. Er sagt, dass man die Preferences auf "Nothing" stellen kann, aber nicht die Options. Wenn man die entsprechenden Zeilen auskommentiert funktioniert das Suchen & Tauschen nach dem Skript richtig. Wenn man das Skript als Binärdatei exportiert stimmen auch die Umlaute in den Dialogen.

Der von mir daraufhin geänderte Skriptteil sieht folgendermaßen aus:
Code
function myFindText(myObject, myFindPreferences, myChangePreferences, myFindChangeOptions){ 
//Reset the find/change preferences before each search.
app.changeTextPreferences = NothingEnum.nothing;
app.findTextPreferences = NothingEnum.nothing;
// app.findChangeTextOptions = NothingEnum.nothing;
var myString = "app.findTextPreferences.properties = "+ myFindPreferences + ";";
myString += "app.changeTextPreferences.properties = " + myChangePreferences + ";";
// myString += "app.findChangeTextOptions.properties = " + myFindChangeOptions + ";";
app.doScript(myString, ScriptLanguage.javascript);
myFoundItems = myObject.changeText();
//Reset the find/change preferences after each search.
app.changeTextPreferences = NothingEnum.nothing;
app.findTextPreferences = NothingEnum.nothing;
// app.findChangeTextOptions = NothingEnum.nothing;
}
function myFindGrep(myObject, myFindPreferences, myChangePreferences, myFindChangeOptions){
//Reset the find/change grep preferences before each search.
app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences = NothingEnum.nothing;
// app.findChangeGrepOptions = NothingEnum.nothing;
var myString = "app.findGrepPreferences.properties = "+ myFindPreferences + ";";
myString += "app.changeGrepPreferences.properties = " + myChangePreferences + ";";
// myString += "app.findChangeGrepOptions.properties = " + myFindChangeOptions + ";";
app.doScript(myString, ScriptLanguage.javascript);
var myFoundItems = myObject.changeGrep();
//Reset the find/change grep preferences after each search.
app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences = NothingEnum.nothing;
// app.findChangeGrepOptions = NothingEnum.nothing;
}
function myFindGlyph(myObject, myFindPreferences, myChangePreferences, myFindChangeOptions){
//Reset the find/change glyph preferences before each search.
app.changeGlyphPreferences = NothingEnum.nothing;
app.findGlyphPreferences = NothingEnum.nothing;
// app.findChangeGlyphOptions = NothingEnum.nothing;
var myString = "app.findGlyphPreferences.properties = "+ myFindPreferences + ";";
myString += "app.changeGlyphPreferences.properties = " + myChangePreferences + ";";
// myString += "app.findChangeGlyphOptions.properties = " + myFindChangeOptions + ";";
app.doScript(myString, ScriptLanguage.javascript);
var myFoundItems = myObject.changeGlyph();
//Reset the find/change glyph preferences after each search.
app.changeGlyphPreferences = NothingEnum.nothing;
app.findGlyphPreferences = NothingEnum.nothing;
// app.findChangeGlyphOptions = NothingEnum.nothing;
}


Ob damit aber alles funktioniert kann ich mit meinen Skriptkenntnissen nicht beurteilen.
...
dschmutzi
17. Jul 2007, 12:37
Zeichenzähler mit Rücktaste
Hi,

eigentlich brauchst du das was du hast nur ergänzen mit dem weiteren Event, das wars:

Code
<textarea rows="3" name="Titel" cols="103"   
style="font-family: Times New Roman; font-size: 12pt; font-weight: bold" onkeyup="ZeichenZaehlen(200,'Titel','Zeichen1')" onkeydown="ZeichenZaehlen(200,'Titel','Zeichen1')">


Gruß Sven
...
Intermedia
16. Apr 2007, 20:53
verbleibende zeichenzahl
hallo macmac,

meinst du sowas:

Code
<HTML> 
<HEAD>
<SCRIPT LANGUAGE="JavaScript" type="text/javascript">
<!--
function cut(cobj,max){
cobj.form.rest.value=max-cobj.value.length;
if(cobj.value.length>max){
cobj.value=cobj.value.substr(0,max);
}
}
//-->
</SCRIPT>
</HEAD>

<BODY>
max. 10 Zeichen
<br>
<FORM METHOD="POST" ACTION="">
Hier Text eingeben:
<TEXTAREA NAME="" ROWS="" COLS="" onkeyup="cut(this,10)"></TEXTAREA>
<br>verbleibend:<input name="rest" readonly>
</FORM>

</BODY>
</HTML>

...
oesi50
28. Jan 2006, 12:35
Kompassnadel mit javascript?
hier ist noch schnell ein Beispiel für Variante 1.

http://vsrv.de/...pass/kompassmap.html


Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)...
oesi50
19. Mär 2005, 16:49
In Liste alle selektieren
hi Gaby,

ich hab Dir mal ein Beispiel gebaut, und hoffe so etwas soll es sein.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE> Select Felder Auswählen </TITLE>

<SCRIPT LANGUAGE="JavaScript">
<!--
function select_all(o){

for (var i=0; i < o.form.s.options.length;i++){
o.form.s.options.selected = o.checked;
}
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<FORM name="formular" METHOD="POST" ACTION="">
<SELECT NAME="s" multiple>
<option>Eins
<option>Zwei
<option>Drei
<option>Vier
<option>Fünf
</SELECT>
<br>
<INPUT TYPE="checkbox" NAME="r" onChange="select_all(this)" onClick="select_all(this)">
</FORM>
</BODY>
</HTML>


Ich habe hier onChange und onClick absichtlich gleichzeitig verwendet, weil die diversen Browser das unterschiedlich handhaben. So geht's in allen Browsern.


Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)...
oesi50
23. Mär 2004, 16:12
Hier Klicken

Aktuell

Quark / Adobe / Apple / Microsoft
einleitung_scharfzeichnen_300

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.
pdf-icon Hier eine kleine Anleitung.

Veranstaltungen
27.08.2019

Die smarte PDF-Workflow-Lösung für Druckereien — powered by Enfocus

Impressed GmbH, Hamburg
Dienstag, 27. Aug. 2019, 10.00 - 10.30 Uhr

Webinar

Wir stellen Ihnen das neueste Produkt aus dem Hause Impressed vor. Den Impressed Workflow Server (IWS) Der Impressed Workflow Server (kurz: IWS) ist eine automatisiert arbeitende PDF-Workflow-Lösung für Druckereien mit einer zentralen, Datenbank-gestützten Jobverwaltung und einer Browser-basierten Jobsteuerung. Die Bedienoberfläche des IWS ermöglicht eine Übersicht über die aktuellen in der Produktion befindlichen Dateien und kann deren weiteren Verlauf steuern. Der IWS automatisiert und standardisiert somit die Produktion - Powered by Enfocus! Der Impressed Workflow Server ist das Ergebnis unserer jahrzehntelangen Erfahrung mit Workflows für die Druckvorstufe sowie die logische Weiterentwicklung auf Basis von bewährten Enfocus Technologien.

Nein

Organisator: Impressed GmbH

Kontaktinformation: Detlef Grimm, E-Mailschulungen AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=265

Impressed Workflow Server (IWS)
Veranstaltungen
28.08.2019

8005 Zürich
Mittwoch, 28. Aug. 2019, 18.00 - 20.15 Uhr

Meetup

«Das Leseerlebnis optimal gestalten, die eigenen Botschaften wirkungsvoll verbreiten und bei der Inhaltserstellung und -verwaltung von schlanken Prozessen und Effizienz profitieren - Publishing erfordert heute den richtigen Umgang mit Tools und Systemen. Eine Mehrkanal-Strategie ist dabei in den meisten Fällen von den Lesern nicht nur gefordert, sondern verdichtet die bereits bestehenden Herausforderungen. Gerade Automatisierungen können hier Abhilfe verschaffen. Nicht nur ermöglichen sie ein durchgängiges und einheitliches Leseerlebnis auf allen Kanälen. Sie machen den Prozess vielmehr effizienter und effektiver. An diesem Publishing-Meetup zeigt Benjamin Linsi verschiedene Beispiele für automatisiertes Publishing - von der kostengünstigen Web-to-Print Lösung über eine ausgeklügeltes Mehrkanal-Publishing-System bis zu einem umfassenden, medienneutralen und browserbasiertem Redaktionssystem. - AGENDA - 18.00 Speech von Benjamin Linsi 19.30 Apéro & Networking 20.15 Check-out - SPEAKER - "Als Marketer denke ich immer von der Zielgruppe aus, lege die Botschaften fest und bestimme, welche Kanäle bespielt werden. Dabei ist ein effizienter Prozess meist massgebend für die eigene Zielerreichung." Benjamin Linsi ist im Marketing Zuhause und setzt sich dabei, sowohl für seine eigene Arbeit als auch im Kundenkontakt, stark mit digitalen Lösungen auseinander. In seiner Position bei der Medienmacher AG setzt er sich dabei fokussiert mit dem Mehrwert von Publishing-Systemen auseinander.»

Nein

Organisator: Digicomp Academy AG

Kontaktinformation: Isil Günalp, E-Mailisil.guenalp AT digicomp DOT ch

https://www.meetup.com/de-DE/Publishing-Group-Switzerland/events/263255802/

Mit Automatisierung den Publishing-Workflow verbessern
Hier Klicken