[GastForen

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

15 Lesezeichen für javascript

Datumsfunktion in Indesign
Hallo Helmut,

ich habe hier ein Script von Martin.
Da ich nicht mehr weiß, unter welchem Link es steht,
setze ich es hier rein.

Code
// Das folgende Script ersetzt den Inhalt des Textes,  
// der mit dem Zeichenformat "z_Datum" ausgezeichnet ist,
// durch das aktuelle Datum.
// So kann man das Datum immer wieder im gesamten Dokument aktualisieren:

// refresh_date-xl.js
//
myStyle = app.documents[0].characterStyles.item("z_Datum");
var d= new Date();
var myMonth = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
var myDate = d.getDate() + ". " + myMonth[d.getMonth()] + " " + (d.getYear()*1 +1900); app.findPreferences = null;
app.changePreferences = null;
app.documents[0].search("",false,false,myDate, {appliedCharacterStyle:myStyle});


Gruß
Quarz
...
Quarz
18. Jul 2007, 22:44
|| 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
AutoFormat in InDesingn CS3
> Mit app.documents[0] läuft das eventScript mit dem event 'afterOpen'.

Aber Achtung:
Ist bereits ein Dokument geöffnet, dann wird mit app.documents[0] das zuletzt aktive (also das, welches vor dem Öffnen des neuen Dokuments aktiv war) adressiert.

Das gerade geöffnete Dokument kann sicherer mit app.documents[-1] adressiert werden. Nur wenige Sekunden später, wenn es angezeigt wird, stimmt diese Behauptung nicht mehr. ;-)
...
Martin Fischer
8. Jul 2008, 17:33
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
TextCleanup.jsx, einfaches suchen und ersetzen
Hallo liebe Foren Mitglieder,

ich versuche gerade unseren Workflow etwas zu vereinfachen (Mehrere Such- und Ersetzenanfragen wie Doppelte Leerzeichen, Leerzeichen vor Komma u.ä.). Bin dabei auf das Script TextCleanup.js gestoßen. Habe jetzt aus dem Forum erfahren, dass es ein erweitertes Script TextCleanup.jsx gibt, dass mit Adobe Indesign CS2 ausgeliefert wird.

Ich habe CS1... was kann ich jetzt hier verwenden

Für das Script TextCleanup.js brauche ich eine Konfig-Datei. Wie kann ich den Suchen/Ersetzen Dialog exportieren und in die Konfig-Datei kopieren? Gibt es dazu ein Tool
Habe dazu leider im Forum nichts gefunden. Gibt es dazu Beispiele?

Gruß
MM
...
meistroM
18. Jul 2007, 11:39
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
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

Photoshop / Lightroom

Veranstaltungen

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen. pdf-icon Hier eine kleine Anleitung.

Veranstaltungen
13.12.2018 - 20.12.2018

3400 Burgdorf, BE
Donnerstag, 13. Dez. 2018, 09.00 Uhr - Donnerstag, 20. Dez. 2018, 09.00 Uhr

Workshop

Schritt für Schritt: Planen, konzipieren und Umsetzen einer responsiven Website mit Wordpress: Lokalen Server einrichten; Frontend/Backend; Vorgehen Schritt für Schritt bis zur fertigen Site.

2-Tages-Workshop CHF 990.00

Ja

Organisator: PubliCollege GmbH

Kontaktinformation: Beat Kipfer, E-Mailinfo AT publicollege DOT ch

www.publicollege.ch

Websites erstellen mit Wordpress und Elementor Pro
Veranstaltungen
19.12.2018

Wie installiert und konfiguriert man Mailchimp und verwendet es für sein Business

Internet
Mittwoch, 19. Dez. 2018, 10.00 - 11.30 Uhr

Webinar

In diesem Webinar zeige ich den Teilnehmern, wie sie mit Mailchimp eigene Newsletter verschicken können. Wie sie Mailchimp installieren und konfigurieren müssen und wie sie eine erste Kampagne machen können.

Gratis

Ja

Organisator: Eric Mächler

https://events.genndi.com/register/818182175026318367/4ac0f277c0

Der Start ins E-Mail Marketing mit Mailchimp