[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt hyperlinkURLDestinations schon von einem anderen Objekt verwendet

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

hyperlinkURLDestinations schon von einem anderen Objekt verwendet

Gaby Leuenberger
Beiträge gesamt: 29

4. Dez 2017, 14:30
Beitrag # 1 von 10
Bewertung:
(2772 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen

Ich habe ein Problem mit identischen URLs im selben Dokument, die ich in Hyperlinks umwandeln möchte.

Wenn ich in der for-Schleife die gefundenen URLs abarbeite, beschwert sich das Skript bei 'hyperlinkURLDestinations.add()', dass diese Destination schon von einem anderen Objekt verwendet wir.
Hier mein Code dazu:
Code
var _myURL = _myDoc.findGrep(); 

for (var x = 0; x < _myURL.length; x++){ //Schleife durch alle gefundenen URLs, verlinke neu
var _URL = _myURL[x]; // Text-Objekt
var _source = _myDoc.hyperlinkTextSources.add(_URL); //hier muss Text sein, weil die Quelle ein Text-Objekt sein muss
var _URLstring = _myURL[x].contents; // String
var _dest = _myDoc.hyperlinkURLDestinations.add(_URLstring, {name: _URLstring}); //Destination will einen String
var _hyperlink = _myDoc.hyperlinks.add(_source, _dest, {name: _URLstring});
}


Ich habe versucht, die Destination über die ID oder den Namen anzusteuern, bin aber von der Syntax grade überfordert.

Vielleicht hat jemand eine Idee?

Danke und Gruss
Gaby
X

hyperlinkURLDestinations schon von einem anderen Objekt verwendet

Martin Fischer
  
Beiträge gesamt: 12411

4. Dez 2017, 14:44
Beitrag # 2 von 10
Beitrag ID: #561168
Bewertung:
(2771 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gaby,

ein Textobjekt (Zeichen, Wort, ...) kann nur für je einen Hyperlink als Quelle dienen.
Was sollte dabei herauskommen, wenn Text auf mehrere unterschiedliche Ziele zielt. :-)

Prüfe vor der Zuweisung eines Hyperlinks, ob der Text bereits als Quelle für einen Hyperlink dient.
Wenn ja, entscheide, ob der alte Hyperlink weiter gelten oder gelöscht und durch den neuen ersetzt werden soll.

Viele Grüße
Martin




als Antwort auf: [#561164]

hyperlinkURLDestinations schon von einem anderen Objekt verwendet

Gaby Leuenberger
Beiträge gesamt: 29

4. Dez 2017, 14:52
Beitrag # 3 von 10
Beitrag ID: #561169
Bewertung:
(2767 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin

Vielen Dank für deine rasche Antwort! Das ist mir im Prinzip ja klar, aber ich habe doch mehrere Textobjekte, an unterschiedlicher Stelle im Dokument, sie haben einfach denselben Inhalt, also der String ist identisch...?

Allfällige alte Hyperlinks, Quellen und Ziele habe ich vorgängig gelöscht, die können das Problem nicht sein.

Entschuldige, ich steh ich grad etwas auf dem Schlauch.

Lieber Gruss
Gaby
Gaby Leuenberger


als Antwort auf: [#561168]

hyperlinkURLDestinations schon von einem anderen Objekt verwendet

Kai Rübsamen
Beiträge gesamt: 4660

4. Dez 2017, 16:20
Beitrag # 4 von 10
Beitrag ID: #561181
Bewertung:
(2743 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Kann es sein, dass das nicht sauber programmiert ist? Wenn ich z.B. ein Hyperlinkziel per Skript anlege, das danach im UI lösche (es ist nicht mehr in der Liste), dann das Skript erneut starte, erhalte ich den Fehler auch. Offenbar spukt da noch etwas im Hintergrund …

Gruß Kai Rübsamen


als Antwort auf: [#561169]

hyperlinkURLDestinations schon von einem anderen Objekt verwendet

Gaby Leuenberger
Beiträge gesamt: 29

5. Dez 2017, 11:13
Beitrag # 5 von 10
Beitrag ID: #561206
Bewertung:
(2647 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen Kai

Ja, das dachte ich anfangs auch, weswegen ich ja alle Sources, Hyperlinks und Destinations zuerst entferne, und zwar je einzeln, weil die Arrays verschieden lang sein können.

Hier mal der ausführlichere Code (Warnung: Anfängerin):
Code
var  _myURL; 
var _myDoc = app.activeDocument;
var _oldDest = _myDoc.hyperlinkURLDestinations.everyItem().getElements();
var _oldSource = _myDoc.hyperlinkTextSources.everyItem().getElements();
var _aHyperlink = _myDoc.hyperlinks.everyItem().getElements(); //Array mit existierenden Hyperlinks

for (var i=_aHyperlink.length-1; i>=0; i--){//Hyperlinks entfernen
var _aHyperlinkRemove = _aHyperlink[i].remove();
_aHyperlink.pop();
}
for (var i=_oldDest.length-1; i>=0; i--){//Ziele entfernen
var _oldDestRemove = _oldDest[i].remove();
_oldDest.pop();
}
for (var i=_oldSource.length-1; i>=0; i--){//Quellen entfernen
var _oldSourceRemove = _oldSource[i].remove();
_oldSource.pop();
}




app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
//matche ALLE URLs
app.findGrepPreferences.findWhat = '((?:(?:https?|ftp|file)://|www\\.|ftp\\.)[-A-Za-z0-9+&@#/%=~_|$?!:,.]*[A-Za-z0-9+&@#/%=~_|$])';
var _myURL = _myDoc.findGrep();

for (var x = 0; x < _myURL.length; x++){ //Schleife durch alle gefundenen URLs, verlinke neu
var _URL = _myURL[x]; // Text-Objekt
try{
var _source = _myDoc.hyperlinkTextSources.add(_URL); //hier muss Text sein, weil die Quelle ein Text-Objekt sein muss
var _URLstring = _myURL[x].contents; // String
var _dest = _myDoc.hyperlinkURLDestinations.add(_URLstring, {name: _URLstring}); //Destination will einen String
var _hyperlink = _myDoc.hyperlinks.add(_source, _dest, {name: _URLstring}); }
catch (e){}
}


Und hier auch noch ein Muster meines Test-Dokuments:
Code
<https://www.revision.ch/liquiditaetsplanung.html> 
(zuletzt besucht am 29.06.2017).
https://www.nzz.ch
Blablabla
https://www.irgendeinewebseite.ch/index.html#id-1

https://www.irgendeinewebseite.ch/#a2343

https://www.nzz.ch


InDesign hätte ja das nette Hyperlink-Interface, das URLs zu Hyperlinks macht, aber das matcht a) die admin.ch-URL mit den # nicht korrekt und b) fügt es bei zwei identischen URLs auch nur einen Link ein. Ich verstehe aber auch nicht genau, was Martin denn nun meinte, aber vielleicht reden wir da nicht vom selben? Jedenfalls führt das Skript auch mit dem try-Block nicht zum Ziel.

Vielen Dank fürs Mitdenken, mir raucht schon der Kopf!

LG
Gaby
Gaby Leuenberger


als Antwort auf: [#561181]

hyperlinkURLDestinations schon von einem anderen Objekt verwendet

Gaby Leuenberger
Beiträge gesamt: 29

5. Dez 2017, 11:24
Beitrag # 6 von 10
Beitrag ID: #561207
Bewertung:
(2647 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich glaube, ich habe das Problem gefunden:

Ich kann nicht denselben Namen vergeben für identische URLs...

Wenn ich bei
Code
   var _dest = _myDoc.hyperlinkURLDestinations.add( _URLtext, {name: _URLtext}); //Destination will einen String 
var _hyperlink = _myDoc.hyperlinks.add(_source, _dest, {name: _URLtext});


je die Option name: rauslösche, läuft es durch und setzt die Links (nummeriert sie dann halt und sie sind im Hyperlink-Panel dann nicht ohne weiteres zu identifizieren...

Vielleicht hat mir jemand eine schlaue Lösung?
Gaby Leuenberger


als Antwort auf: [#561206]

hyperlinkURLDestinations schon von einem anderen Objekt verwendet

Kai Rübsamen
Beiträge gesamt: 4660

5. Dez 2017, 11:37
Beitrag # 7 von 10
Beitrag ID: #561210
Bewertung:
(2643 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gaby,

ich hab leider keine Zeit das heute zu testen. Ich löse das bei mir in der Praxis so, dass ich für alles einen Zähler mitlaufen lasse und damit gibt es quasi nichts doppelt.

Gruß Kai Rübsamen


als Antwort auf: [#561207]

hyperlinkURLDestinations schon von einem anderen Objekt verwendet

Gaby Leuenberger
Beiträge gesamt: 29

5. Dez 2017, 11:45
Beitrag # 8 von 10
Beitrag ID: #561212
Bewertung:
(2640 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai

Kein Stress, ich muss auch gleich wegrennen, und kann erst morgen wieder weitermachen.

Ich werd das mit dem Zähler mal versuchen, aber ich weiss grad noch nicht so recht, wie ich den der name-Option mitgeben soll.

Interessant: Wenn ich zu Fuss verlinke, macht ID auch einen Zähler hinter den URL-Namen, wenn ich über das Panel automatisch verlinke, dann setzt mir ID nummerierte Links unter ein- und dieselbe URL, oh Objektmodell, du treibst mich in den Wahnsinn...

Merci und Gruss
Gaby
Gaby Leuenberger


als Antwort auf: [#561210]

hyperlinkURLDestinations schon von einem anderen Objekt verwendet

WernerPerplies
Beiträge gesamt: 2572

5. Dez 2017, 12:18
Beitrag # 9 von 10
Beitrag ID: #561214
Bewertung:
(2623 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gaby,

ja Hyperlinks haben es in sich, und mit dem Namen liegst Du richtig.

Ich habe das bei meinen Skripten , z. B. bei (
WpsHyperlinkInspector – Alle Hyperlinkinformationen einer Adobe InDesign Datei auf einen Blick), gelöst, indem ich entweder eine eigene Buchhaltung der Links gepflegt oder alternativ vor Erzeugung das Vorhanden sein geprüft habe.

Wenn ein Link schon vorhanden ist und voll gültig ist, erzeuge ich einen neuen Namen + (Zähler).

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 16.12.2020, Version 3.XX, neue Funktionen
Kundenstimmen


als Antwort auf: [#561207]

hyperlinkURLDestinations schon von einem anderen Objekt verwendet

Gaby Leuenberger
Beiträge gesamt: 29

6. Dez 2017, 08:29
Beitrag # 10 von 10
Beitrag ID: #561242
Bewertung:
(2557 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner (und Kai)

Danke für die Antwort. Heute morgen bin ich wacher und mir hat auch gleich gedämmert, wie ich den Zähler beim Namen setzen kann. Jetzt flutscht alles wunderbar! :)

Vielen Dank allen fürs Mitdenken, ich finde es immer wieder faszinierend, wie sehr ich mich vor eine Wand fahren kann und dann gar nichts mehr durchschaue, und einen Tag später fällt es wie Schuppen von den Augen ... (leider nicht immer :)).

Einen schönen Nikolaus wünsch ich

Liebe Grüsse
Gaby


als Antwort auf: [#561214]
X

Aktuell

PDF / Print
kalenderFebruar_kl

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 hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
05.02.2021 - 05.11.2021

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Freitag, 05. Feb. 2021, 13.00 Uhr - Freitag, 05. Nov. 2021, 17.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/9PM

Veranstaltungen
01.03.2021 - 05.03.2021

Persönlichkeitsentwicklung

Online
Montag, 01. März 2021, 00.17 Uhr - Freitag, 05. März 2021, 00.18 Uhr

Webinar

Personal Power Coaching - Um was geht es? ​ Potenzialentfaltung: Potenzial entdecken und entfalten Talente entdecken: Deine Talente und Fähigkeiten erkennen und loslegen Gewohnheiten: schlechte Gewohnheiten durch Positive ersetzen Selbstbewusstsein stärken: Dein Bewusstsein stärken Eigendynamik entwickeln: Mehr Erfolg durch Eigenverantwortung & Disziplin Ängste kontrollieren: Ängste als Antrieb nutzen Entscheidungen treffen: Mit mehr Mut an die Sache ran! Lebensenergie steigern: Deine Lebensenergie steigern und aufrechterhalten Ziele erreichen: Ziele setzen und übertreffen! Motivationssteigerung: Mehr Erfolg durch Selbstmotivation Selbstvertrauen: Selbstvertrauen auf- und ausbauen

Details:
https://www.snfa.ch/swiss-personal-power-birolisik

Ja

Organisator: Birol Isik

Kontaktinformation: Birol Isik, E-Mailinfo AT snfa DOT ch

https://www.snfa.ch/swiss-personal-power-birolisik

Neuste Foreneinträge


Bilder verschieben sich nach dem Speichern und Kopiern der Datei

Kursivierung geht bei é und É verloren

Abbildungen auf 100 % bringen

Scriptphänomen alle 16 Steps

Alternative Acrobat Pro

Affinity Designer

Objekte in Texten lassen sich nicht mehr mit Maus auswählen, nurnoch als Text mit Cursor

Welches Grafiktablett wofür?

Affinity Publisher 1.9

Optimierung doc2pdf-withPresets.jsx
medienjobs