[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste

Position von ImageFrame bestimmen

Hans Haesler
  
Beiträge gesamt: 5826

13. Dez 2011, 17:25
Bewertung:

gelesen: 5339

Beitrag als Lesezeichen
Hallo Udo,

okay. Hier dennoch ein "coup de pouce", ein Schubs mit dem Daumen (wie wir hier in Lausanne sagen): Der Anfang des Scripts. Die Namen der Bilder werden aufgelistet.

Der Alert, der die Namen einzeln anzeigt und dahinter den Index, dient nur zum Verständnis und muss entfernt werden, sobald alles klar ist.

Mit 'indexOf' wird die Position einer Textkette (hier "egende") innerhalb einer anderen Textkette (hier der Bildname) festgestellt. Wenn das Ergebnis -1 ist, dann ist die gesuchte Textkette nicht enthalten. Deshalb wird der Operator != (ist nicht) verwendet: Wenn das Ergebnis nicht minus eins ist, dann hänge den Namen an den Array.

Code
// vorsichtshalber die Dialoge einschalten 
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;

// testen, ob ein Dokument geöffnet ist
if (app.documents.length == 0) {
alert ("Es ist kein Dokument offen.", "Achtung");
exit();
}

// die Liste der Bilder aufstellen
var allImages = app.documents[0].links;
// die Verknüpfungen zählen
var nImages = allImages.length;
var imgNames = new Array ();
var imgCtr = new Array ();
// eine Schleife durch die Bilderliste und die Namen auflisten
for (var p=0; p<nImages; p++) {
// der aktuelle Bildname
var curName = allImages[p].name;
// die folgende Zeile dient nur zur Demonstration
alert (curName + "\nder Index von \"egende\" ist: " + (curName.indexOf("egende")));
// wenn der Name die Textkette "egende" enthält ...
if (curName.indexOf("egende") != -1) {
// ... wird er an den Array angehängt
imgNames.push(curName);
// auch der Zähler wird gespeichert
imgCtr.push(p);
}
}
// wenn der Array mit den Namen mehr als ein Element enthält ...
var nNames = imgNames.length;
if (nNames == 0) {
alert ("Kein Legendenbild gefunden.", "Achtung");
}
else if (nNames == 1) {
// dieser Alert kann entfernt werden
alert ("Ein Legendenbild gefunden.", " ");
}
else if (nNames > 1) {
// diesen Alert durch den Dialog ersetzen, welcher die Liste zur Auswahl anbietet
alert (nNames + " Legendenbilder gefunden.", " ");
}

Es bleibt noch viel zu tun. Die nächste Etappe wird sein, einen Dialog zu zeigen, welcher die Liste der gefundenen Namen zur Auswahl anbietet.

Gruss, Hans

(Dieser Beitrag wurde von Hans Haesler am 13. Dez 2011, 17:27 geändert)
Änderungsverlauf:
Beitrag geändert von Hans Haesler (Veteran) am 13. Dez 2011, 17:27