Ich versuche, eine Liste von Hyperlinks aus meinem Dokument zu erhalten, das in der Konsole gedruckt oder in eine Textdatei ausgegeben wird. Damit spiele ich:
for (k=0; k<app.activeDocument.hyperlinks.length-1; k++)
{
$.writeln(app.activeDocument.hyperlinks.item[k]);
}
Da gibt es mehr als einen Fehler, fürchte ich. „Hyperlink“ wird in der neuesten Version von Adobes eigenem Scripting-Handbuch (das wäre „Adobe InDesign CS6 Scripting Guide: JavaScript“ auf http://www.adobe.com/devnet/indesign/documentation.html ) nicht behandelt, aber das ist es kein Grund, Dinge einfach zu „probieren“. Der ExtendScript Toolkit Editor hat eine eigene Hilfe – den „Object Model Viewer“ unter „Help“ – in der Sie hyperlink
alle seine Eigenschaften finden können, aber ich bevorzuge diese Version derselben Daten: Hyperlink .
Sie haben folgende Probleme:
app.activeDocument.hyperlinks.item[k]
: item
ist kein Array , sondern eine Funktion (siehe Hyperlinks.item() ).item
, erhalten Sie ein, [Object Hyperlink]
da es sich um ein Objekt mit mehreren Eigenschaften handelt... und die Immobilie, die Sie interessiert, ist destination
:
Der Text, die Seite oder die URL, auf die der Hyperlink verweist. Kann zurückgeben: HyperlinkTextDestination, HyperlinkPageDestination, HyperlinkExternalPageDestination, HyperlinkURLDestination oder ParagraphDestination.
.. genauer gesagt, da Hyperlinks auf viele verschiedene Objekte verweisen können, destination
muss der vom Typ sein HyperlinkURLDestination
;
.. das ist ein eigenes Objekt, wieder mit vielen Eigenschaften (siehe HyperlinkURLDestination ); und Sie möchten vermutlich die destinationURL
.
Alles zusammen, das folgende Skript
for (k=0; k<app.activeDocument.hyperlinks.length; k++)
{
if (app.activeDocument.hyperlinks[k].destination instanceof HyperlinkURLDestination)
$.writeln (app.activeDocument.hyperlinks[k].destination.destinationURL);
}
listet alle externen URLs auf. Das Schreiben in eine Datei ist ebenfalls einfach:
writeFile = File(Folder.myDocuments+'/urls.txt');
writeFile.open("w");
for (k=0; k<app.activeDocument.hyperlinks.length; k++)
{
if (app.activeDocument.hyperlinks[k].destination instanceof HyperlinkURLDestination)
writeFile.writeln (app.activeDocument.hyperlinks[k].destination.destinationURL);
}
writeFile.close();
writeFile.execute();