Tcha, wer hätte das ahnen können, dass, wenn ich mein Script mit JS hätte realisieren wollen, ich auf diese Probleme stoße.
Habe mir die aktualisierte Version herauskopiert, leider mit gleichem Ergebnis.
Ich wollte gerne ein paar Screenshot anhängen, aber da musst Du mir nun glauben nun, dieses Forum ist zwar neu, aber noch nicht im Gigabitzeitalter angekommen :-)
Markiert: 4 verschiedene Assettypen, einer im DAM, Ergebnis:
52684001_001.tif
9287:Corporate:AssetRecords:183
_An%20den%20Linden%201__%2015.pdf
10Jahre_CHde_FH_gerade_S_rot.ai
Habe noch etwas gewühlt, Aion hatte mir mal an einer anderen Stelle geholfen. Das JS-script ist nie wirklich fertig geworden, aber hier stellt sich der Linkname richtig dar. Untersucht wird das aktive Dokument auf die in const uris liegenden Filepath-Segmente. Ich habe die Beweislast mit ! umgedreht, so dass in einem Testdok nur die DAM-Daten angezeigt werden – und das werden sie :) Ich habe versucht, den komplexen Code von Aion weiterzutreiben, auf unsere Bedürfnsisse hin, doch konnte ich die Event-Struktur und Aufbau der Fenster und Funktion untereinander nie nachvollziehen. Deswegen ist dies eine halb-funktionierende Hülle, an der du aber vielleicht ablesen kannst, warum das hier funktioniert, und wie oben leider nicht.
Zur Erklärung: Dieses Script untersucht alle Links auf die in const uris hinterlegten Teile der zu suchenenden Dateipfade. Enthält ein Linkpath einen Teil (zB die Server-IP), wird er zum Abarbeiten in eine listbox gefüllt. Das Anklicken springt zum Objekt.
Hoffentlich steht hier irgendwo das "A-HA"-Erlebnis in den Zeilen…
#targetengine 'session'
var ProgrammName = "Image Checker"; myVersion = "0.3.190314"
var maxlinks, currentlinks,mySel,FilterFlag;
app.scriptPreferences.enableRedraw = true;
FilterFlag = 1; ZoomFactor = 4; FireOnce = true;
script_ApfelV = 'tell application "System Events"\nkeystroke "v" using {command down}\nend tell';
script_Enter = 'tell application "System Events"\nkeystroke return\nend tell';
#targetengine 'session'
var ProgrammName = "Image Checker"; myVersion = "0.3.190314"
var maxlinks, currentlinks,mySel,FilterFlag;
app.scriptPreferences.enableRedraw = true;
FilterFlag = 1; ZoomFactor = 4; FireOnce = true;
script_ApfelV = 'tell application "System Events"\nkeystroke "v" using {command down}\nend tell';
script_Enter = 'tell application "System Events"\nkeystroke return\nend tell';
function sortByKey(array, key) {
return array.sort(function(b, a) {
var x = a[key]; var y = b[key];
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
});
}
//Main routine
var main = function() {
var doc = app.properties.activeDocument,dlg, linksData, n,
callback;
if ( !doc ) return;
this.dlg = this.dlg || ui();
this.dlg.show();
}
//Retrieve doc links
function getLinks(sorter){
const uris = [
"srvmar16\.zentrale\.ad\.local",
"192\.168\.96\.116","172\.18\.116\.1"];
var ls, n = 0, l, o = {}, lid,
doc = app.properties.activeDocument, reg;
if ( !doc ) return o;
reg = new RegExp( "("+uris.join("|")+")", "i" );
ls = doc.links.everyItem().getElements();
maxlinks = ls.length;
currentlinks = ls.length;
n = ls.length; maxlinks = n;
sortByKey(ls, "name");
while ( n-- ) {
l = ls[n];
if (FilterFlag == 1)
{if (reg.test(l.filePath) ) continue; }
else
{if (l.parent.flip == Flip.NONE) continue;}
try {Ort = l.parent.parentPage.name;} catch(err) {Ort = "MF"};
lid = l.id;
o[lid] = {name:l.name, id:lid, container:l.parent.parent,onPage:Ort};
//o[lid] = {name:l.name, id:lid, container:l.parent.parent,onPage:l.label};
}
currentlinks = o.__count__;
return o;
}
//UI build function
var ui = function (){
var u,
w = new Window('palette', ProgrammName+"["+$.engineName+"]"),
grp0 = w.add('group'),
panel0 = grp0.add('panel', [0,0,200,70], "Überprüfen", {borderStyle:'black'}),
grp9 = panel0.add('group'),
grp1 = grp9.add('group'),
radio1 = grp1.add('radiobutton', undefined, "Cumulus-Check"), radio2 = grp1.add ('radiobutton', undefined, "Gespiegelte Bilder"),
panel1 = grp0.add('panel', [0,0,320,70], "Optionen", {borderStyle:'black'}),
rower = panel1.add('group'),
checkboxgrp1 = rower.add('group'),
check1 = checkboxgrp1.add ("checkbox", undefined, "Zoomen"),
check2 = checkboxgrp1.add ("checkbox", undefined, "Suffix ignorieren"),
checkboxgrp2 = rower.add('group'),
check3 = checkboxgrp2.add ("checkbox", undefined, "CantoCumulus"),
check4 = checkboxgrp2.add ("checkbox", undefined, ""),
ls = w.add('listbox',undefined,undefined,{selection: mySel, numberOfColumns: 2, showHeaders: true, columnTitles: ["Seite", "Name"]}),
grp = w.add('group'),
pbar = grp.add ('progressbar', undefined, 0, maxlinks),
t1 = grp.add ('statictext', undefined, "999/999 ➜ 100 %"),
bgrp = w.add('group'),
btn1 = bgrp.add('button',u,"Liste Aktualisieren"),
btn2 = bgrp.add('button',u,"Schließen"),
linkItem, listItem,
updateLinksList = function(param) {
var data, linkData, listItem;
ls.removeAll();
if (param == 0) {data = getLinks(0)} else {data = getLinks(1)};
if (FilterFlag == 1) {radio1.value = true;} else {radio2.value = true;}
t1.text = ""+currentlinks+ "/"+maxlinks+" ➜ "+Math.round((100 - (((100 / maxlinks) * currentlinks))))+" %";
pbar.maxvalue = maxlinks;
pbar.value = maxlinks - currentlinks;
w.update();
if ( !data.__count__ ) return;
currentlinks = ( data.__count__ );
for ( prop in data ) {
linkData = data[prop];
listItem = ls.add('item', linkData.onPage);
listItem.checked = false;
listItem.subItems[0].text = linkData.name;
listItem.data = linkData;
};
}, ev = app.eventListeners.itemByName ( "onSelectionChanged" );
w.alignChildren = ["fill","fill"];
grp1.orientation = "column";
checkboxgrp1.orientation = "column";
checkboxgrp1.alignChildren = "left";
checkboxgrp2.orientation = "column";
checkboxgrp2.alignChildren = "left";
grp1.alignChildren = ["fill","fill"];
grp0.alignChildren = "top";
grp9.alignChildren = "top";
panel0.alignChildren = "left";
rower.alignChildren = ["row","top"];
grp1.borderStyle = "white";
grp.alignChildren = ["fill","fill"];
bgrp.alignChildren = ["fill","fill"];
ls.preferredSize = [300,200];
ls.maximumSize.height = 300;
pbar.preferredSize = [400,2];
pbar.maxvalue = maxlinks;
pbar.value = maxlinks - currentlinks;
t1.characters = 16;
t1.justify = "right";
radio1.value = true;
check1.value = true;
check2.value = true;
check3.value = true;
check4.value = false;
check4.visible = false;
if (FireOnce == true)
{
updateLinksList(0);
w.update();
FireOnce = false;
}
btn2.onClick = function(){w.close(0)};
btn1.onClick = function()
{
if (check1.value == true) {updateLinksList(0)} else {updateLinksList(1)}
w.update()
};
radio1.onClick = function(){
FilterFlag = 1;
pbar.maxvalue = maxlinks;
pbar.value = maxlinks - currentlinks;
updateLinksList(0);
w.update()
};
radio2.onClick = function() {
FilterFlag = 2;
pbar.maxvalue = maxlinks;
pbar.value = maxlinks - currentlinks;
updateLinksList(1);
w.update()
};
ls.onDoubleClick = function() {
if (ls.items[ls.selection.index].checked == true) {ls.items[ls.selection.index].checked = undefined;} else {ls.items[ls.selection.index].checked = true;}
//app.menuActions.itemByID(1936410).invoke();
};
ls.onChange = function() {
if ( !ls.selection ) return;
//mySel = ls.selection;
t1.text = ""+currentlinks+ "/"+maxlinks+" ➜ "+Math.round((100 - (((100 / maxlinks) * currentlinks))))+" %";
if (check1.value == true)
{zoomObject ( ls.selection.data.container , ZoomFactor,)} else
{zoomObject ( ls.selection.data.container , 0,)};
if (check3.value == true)
{
if (check2.value == true) {SetClipboard ( ls.selection.data.name.replace ( /\.[a-z]+$/i, '') );} else {SetClipboard ( ls.selection.data.name)};
app.menuActions.itemByID(1936410).invoke();
app.doScript(script_ApfelV,ScriptLanguage.APPLESCRIPT_LANGUAGE);
app.doScript(script_Enter,ScriptLanguage.APPLESCRIPT_LANGUAGE);
}
}
w.onShow = function(){
}
if ( !ev.isValid ) {
app.eventListeners.add("afterSelectionChanged",function(evt){
t1.text = ""+currentlinks+ "/"+maxlinks+" ➜ "+Math.round((100 - (((100 / maxlinks) * currentlinks))))+" %";
pbar.maxvalue = maxlinks;
pbar.value = maxlinks - currentlinks;
});
}
return w;
};
//Created by Dave Saunders > http://jsid.blogspot.fr/2006/01/zoom-in-on-object.html
function zoomObject(theObj, theRatio) {
try {
var objBounds = theObj.geometricBounds;
} catch (e) {
throw "Objekt hat keine Abmessungen."
}
var ObjHeight = objBounds[2] - objBounds[0];
var ObjWidth = objBounds[3] - objBounds[1];
var myWindow = app.activeWindow;
var pageBounds = myWindow.activePage.bounds;
var PgeHeight = pageBounds[2] - pageBounds[0];
var PgeWidth = pageBounds[3] - pageBounds[1];
var hRatio = PgeHeight/ObjHeight;
var wRatio = PgeWidth/ObjWidth;
var zoomRatio = Math.min(hRatio, wRatio);
var OldZoomVal;
app.select(theObj); // to make active the page that holds theObj
if (theRatio != 0) {
myWindow.zoom(ZoomOptions.fitPage);
myWindow.zoomPercentage = myWindow.zoomPercentage * theRatio; // * zoomRatio;
} else {
OldZoomVal = myWindow.zoomPercentage;
myWindow.zoom(ZoomOptions.fitPage);
myWindow.zoomPercentage = OldZoomVal;
} }
//See here for reference :
//https://forums.adobe.com/thread/2203330
function SetClipboard(clip){
var clipboard;
if(File.fs == "Macintosh"){
app.doScript ('tell application "Finder" to set the clipboard to "'+clip+'"',ScriptLanguage.APPLESCRIPT_LANGUAGE);
} else {
app.doScript ( 'Dim theObject\r Set theObject = CreateObject (\"htmlfile\")\r Call theObject.ParentWindow.ClipboardData.SetData(\"text\",\"'+clip+'\")', ScriptLanguage.visualBasic );
}
return;
}
main();