[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Relink2NewPath_andSuffix_Subfolders_StatusMissing

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

Relink2NewPath_andSuffix_Subfolders_StatusMissing

Didiana
Beiträge gesamt: 5

10. Jan 2014, 15:52
Beitrag # 1 von 9
Bewertung:
(4138 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Moin!

Vielleicht kann mir jemand helfen der sich besser im Scripten auskennt als ich ;)
Also wie man dem Thema schon evtl. entnehmen kann versuche ich ein Script zu erstellen, welches das Relink2NewPath, Relink2NewPath_andSuffix, Relink2NewPath_Subfolders und Relink2NewPath_StatusMissing Script enthält.

Ich bräuchte also ein Script welches Verknüpfungen automatisch aktualisiert, dabei fehlende .jpg gegen gleichnamige .tif Verknüpfung austauscht und nach diesen in allen Unterordnern eines Ordners sucht.

Aus diesem Grund habe ich das funktionierende Script Relink2NewPath_andSuffix sowie Relink2NewPath_StatusMissing versucht mit dem Relink2NewPath_Subfolders zu kombinieren. Ich habe einiges ausprobiert aber das gewünschte Ziel erreiche ich nicht.
Vielleicht kann mir hier ja jmd weiterhelfen?

Diese hier habe ich versucht zu mixen, einzeln funktionieren sie einwandfrei:

Code
//Relink2NewPath_andSuffix.jsx   

var oldSuffix = ".jpg";
var newSuffix = ".tif";

var myDoc = app.documents[0];
var myFolder = Folder.selectDialog("Neuer Pfad zu dem Bildern")+"";
myLinks = myDoc.links;
for (oneLink=myLinks.length-1;oneLink>-1;oneLink--) {
myLink = myLinks[oneLink];
if (myLink.status == LinkStatus.linkMissing) {
myName = String(File.encode(myLink.name.split(oldSuffix).join(newSuffix)));
myNewLink = File(myFolder + "/" + myName);
try{
myLink.relink(myNewLink);
myLink.update();
}
catch(e){}
}
}



//Relink2NewPath_StatusMissing.jsx

var myDoc = app.documents[0];
var myFolder = Folder.selectDialog("Neuer Pfad zu dem Bildern")+"";
var myLinks = myDoc.links;
for (oneLink = myLinks.length-1; oneLink >-1; oneLink--) {
var myLink = myLinks[oneLink];
// Status: Verknüpfung fehlend
if (myLink.status == LinkStatus.linkMissing)
{
var myName = String(File.encode(myLink.name));
var myNewLink = File(myFolder + "/" + myName);
try{
myLink.relink(myNewLink);
myLink.update();
}
catch(e){}
}
}

//Relink2NewPath_Subfolders.jsx

var myDoc = app.documents[0];
var topFolder = Folder.selectDialog ("Choose a Folder...");
var fileandfolderAr = scanSubFolders(topFolder);
myLinks = myDoc.links;
for (oneLink=myLinks.length-1;oneLink>-1;oneLink--)
{
myLink = myLinks[oneLink];
myName = String(File.encode(myLink.name));

for (var c = 0; c < fileandfolderAr[1].length; c++)
{
var myNewLink = File(fileandfolderAr[1][c]+ "/" + myName);
try
{
myLink.relink(myNewLink);
myLink.update();
}
catch(e)
{
}
}
}




function scanSubFolders(tFolder)
{
var sFolders = new Array();
var allFiles = new Array();
sFolders[0] = tFolder;
for (var j = 0; j < sFolders.length; j++) // loop through folders
{
var procFiles = sFolders[j].getFiles();
for (var k=0;k<procFiles.length;k++) // loop through this folder contents
{
if (procFiles[k] instanceof File) allFiles.push(procFiles[k]);
else if (procFiles[k] instanceof Folder) sFolders.push(procFiles[k]);
}
}
return [allFiles,sFolders];
}


Und hier schlagen sich wahrscheinlich gleich alle die Hände über den Kopf, also bei dem hier hätte ich gerne Hilfe...

Code
//Relink2NewPath_Suffix_and_Subfolders.jsx   

var oldSuffix = ".JPG";
var newSuffix = ".tif";

var myDoc = app.documents[0];
var topFolder = Folder.selectDialog ("Choose a Folder...");
var fileandfolderAr = scanSubFolders(topFolder);
myLinks = myDoc.links;
for (oneLink=myLinks.length-1;oneLink>-1;oneLink--)
{
myLink = myLinks[oneLink];
if (myLink.status == LinkStatus.linkMissing) {
myName = String(File.encode(myLink.name.split(oldSuffix).join(newSuffix)));
myNewLink = File(myFolder + "/" + myName);
for (var c = 0; c < fileandfolderAr[1].length; c++)
{
var myNewLink = File(fileandfolderAr[1][c]+ "/" + myName);
try
{
myLink.relink(myNewLink);
myLink.update();
}
catch(e)
{
}
}
}
}


//Relink2NewPath_SubFolders.jsx

function scanSubFolders(tFolder)
{
var sFolders = new Array();
var allFiles = new Array();
sFolders[0] = tFolder;
for (var j = 0; j < sFolders.length; j++) // loop through folders
{
var procFiles = sFolders[j].getFiles();
for (var k=0;k<procFiles.length;k++) // loop through this folder contents
{
if (procFiles[k] instanceof File) allFiles.push(procFiles[k]);
else if (procFiles[k] instanceof Folder) sFolders.push(procFiles[k]);
}
}
return [allFiles,sFolders];
}


//Relink2NewPath_StatusMissing.jsx

var myDoc = app.documents[0];
var myFolder = Folder.selectDialog("Neuer Pfad zu dem Bildern")+"";
var myLinks = myDoc.links;
for (oneLink = myLinks.length-1; oneLink >-1; oneLink--) {
var myLink = myLinks[oneLink];
// Status: Verknüpfung fehlend
if (myLink.status == LinkStatus.linkMissing)
{
var myName = String(File.encode(myLink.name));
var myNewLink = File(myFolder + "/" + myName);
try{
myLink.relink(myNewLink);
myLink.update();
}
catch(e){}
}
}

X

Relink2NewPath_andSuffix_Subfolders_StatusMissing

Hans Haesler
  
Beiträge gesamt: 5826

11. Jan 2014, 21:00
Beitrag # 2 von 9
Beitrag ID: #521927
Bewertung:
(4044 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Didiana,

herzlich willkommen auf HDS! :-)

Ich habe nun versucht, eine Testumgebung nachzubauen:
– in einem InDesign-Dokument drei ".JPG"-Dateien importiert;
– das InDesign-Dokument gespeichert und geschlossen;
– die drei Bilder mit Photoshop geöffnet und als ".tif" gespeichert;
– die drei neuen Dateien in je einen Unterordner eines Hauptordners verschoben;
– die drei Original-Dateien in einen anderen Ordner verschoben;
– das InDesign-Dokument erneut geöffnet.

Die drei Bilder haben den Status "Fehlend".

Jetzt Dein Original-Script gestartet. Zwei Mal wird man aufgefordert, den Hauptordner zu wählen. Am Schluss sind alle drei Bilder aktualisiert. Wo ist das Problem?

Als nächstes habe ich den Code gesäubert: Die führenden Leerschläge durch Tabulatoren ersetzt; die Einzüge korrigiert; die Akkoladen zum Teil anders positioniert und jene eingefügt, welche optionell weggelassen worden sind. Und den letzten Abschnitt – alles nach "//Relink2NewPath_SubFolders.jsx" – entfernt.

Zudem in Zeile 12 das myFolder durch topFolder ersetzt.

Und die neue Version des Scripts gestartet. Ergebnis: Alle drei Bilder werden wie erwartet aktualisiert.

Code
var oldSuffix = ".JPG"; 
var newSuffix = ".tif";

var myDoc = app.documents[0];
var topFolder = Folder.selectDialog ("Choose a Folder...");
var fileandfolderAr = scanSubFolders(topFolder);
myLinks = myDoc.links;
for (oneLink=myLinks.length-1; oneLink>-1; oneLink--) {
myLink = myLinks[oneLink];
if (myLink.status == LinkStatus.linkMissing) {
myName = String(File.encode(myLink.name.split(oldSuffix).join(newSuffix)));
myNewLink = File(topFolder + "/" + myName);
for (var c=0; c<fileandfolderAr[1].length; c++) {
var myNewLink = File(fileandfolderAr[1][c]+ "/" + myName);
try {
myLink.relink(myNewLink);
myLink.update();
}
catch(e) {
}
}
}
}

function scanSubFolders(tFolder) {
var sFolders = new Array();
var allFiles = new Array();
sFolders[0] = tFolder;
for (var j=0; j<sFolders.length; j++) { // loop through folders
var procFiles = sFolders[j].getFiles();
for (var k=0; k<procFiles.length; k++) { // loop through this folder contents
if (procFiles[k] instanceof File) {
allFiles.push(procFiles[k]);
}
else if (procFiles[k] instanceof Folder) {
sFolders.push(procFiles[k]);
}
}
}
return [allFiles,sFolders];
}

Fragen:
1. Sind alle Bilder "Fehlend"? Oder gibt es auch welche, deren Status "OK" ist und durch eine Datei mit Endung ".tif" ersetzt werden sollen?
Falls letzteres zutrifft, dann muss das Script ergänzt werden.

2. Welche InDesign-Version benutzest Du? Falls CS4 oder höher: Die Zeile 17 (= myLink.update();) ist nicht mehr notwendig.

Gruss, Hans


als Antwort auf: [#521889]

Relink2NewPath_andSuffix_Subfolders_StatusMissing

Didiana
Beiträge gesamt: 5

11. Jan 2014, 23:26
Beitrag # 3 von 9
Beitrag ID: #521931
Bewertung:
(4012 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

die Testumgebung hast du perfekt nachgebaut, genau so hab ich das gemeint und bei dir hat das Script in der jetzigen Form funktioniert? Bei mir wurden nur fehlende Bilder aktualisiert, sofern sie bereits als .tif eingebaut worden waren. Die eingebauten .jpg dagegen wurden nicht aktualisiert und neu verknüpft und blieben weiterhin "Fehlend".

Antwort:
1. Meistens sind alle Bilder "Fehlend".
Jedoch befinden sich in einigen Dokumenten welche, die "Ok" sind, diese sind aber bereits korrekt verknüpft und können ignoriert werden. (Müssen nicht ersetzt werden) Auch kann es vorkommen, dass die Bilder bereits als ".tif" eingebaut worden sind, dennoch "Fehlend" sind und nur ein neuer Pfad zugeordnet werden muss.

2. Oh stimmt hätte ich erwähnen sollen. Ich nutze Indesign CS 5.0, CS 5.5, sowie CC. Jedoch wäre es primär wichtig, dass das Script in CS 5.5 funktioniert.

Immerhin hab ichs nicht ganz verbockt, da es bei dir zu funktioinieren scheint ;)


als Antwort auf: [#521927]

Relink2NewPath_andSuffix_Subfolders_StatusMissing

Hans Haesler
  
Beiträge gesamt: 5826

12. Jan 2014, 10:10
Beitrag # 4 von 9
Beitrag ID: #521934
Bewertung:
(3963 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Didiana,

Zitat ... Die eingebauten .jpg dagegen wurden nicht aktualisiert ...

Also ... wenn das Suffix der eingebauten ".jpg" ist und im Script die Variable 'oldSuffix' als ".JPG" definiert ist, dann kann es nicht funtionieren.

Ein neuer Versuch: Die Variable 'oldSuffix' wird bei jedem einzelnen fehlenden Bild festgestellt. Dann klappt es sowohl mit ".JPG" als auch mit ".jpg". Und sogar mit ".tif" und ".eps" und ".psd" und allem, was drei Buchstaben hat.

Code
//NeuVerknuepfen.js 
//DESCRIPTION:Fehlende Bilder neu verknüpfen

var newSuffix = ".tif";

var curDoc = app.documents[0];
var topFolder = Folder.selectDialog ("Bildordner wählen ...");
var fileandfolderAr = scanSubFolders(topFolder);
var allLinks = curDoc.links;
var probCtr = 0;
for (oneLink=allLinks.length-1; oneLink>-1; oneLink--) {
var curLink = allLinks[oneLink];
if (curLink.status == LinkStatus.linkMissing) {
var oldName = String(File.encode(curLink.name));
var oldSuffix = oldName.slice(-4);
var newName = oldName.replace(oldSuffix, newSuffix);
var newLink = File(topFolder + "/" + newName);
var okay = false;
for (var n=0; n<fileandfolderAr[1].length; n++) {
var newLink = File(fileandfolderAr[1][n]+ "/" + newName);
try {
curLink.relink(newLink);
okay = true;
break;
}
catch(e) {
}
}
}
if (!okay) { probCtr++; }
}

if (probCtr == 0) {
var dlog = new Window("palette");
dlog.size = [320,100];
dlog.add("statictext", [80, 100, 320, 116], "Fertig.");
dlog.show();
$.sleep(999);
dlog.close();
}
else if (probCtr == 1) {
alert ("Ein Bild nicht aktualisiert.", "Achtung");
}
else {
alert (probCtr + " Bilder nicht aktualisiert.", "Achtung");
}

function scanSubFolders(tFolder) {
var sFolders = new Array(tFolder);
var allFiles = new Array();
for (var j=0; j<sFolders.length; j++) {
var procFiles = sFolders[j].getFiles();
for (var k=0; k<procFiles.length; k++) {
if (procFiles[k] instanceof File) {
allFiles.push(procFiles[k]);
}
else if (procFiles[k] instanceof Folder) {
sFolders.push(procFiles[k]);
}
}
}
return [allFiles,sFolders];
}

Getestet mit CS5. Es sollte aber auch mit CS5.5 funktionieren.

Gruss, Hans


als Antwort auf: [#521931]

Relink2NewPath_andSuffix_Subfolders_StatusMissing

Didiana
Beiträge gesamt: 5

12. Jan 2014, 10:58
Beitrag # 5 von 9
Beitrag ID: #521936
Bewertung:
(3948 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

vielen Dank, dass du die Mühe auf dich nimmst! An sich sind die Bilder als ".JPG" eingebaut daher hatte ich auch im Script ".JPG" angegeben. Hatte halt dennoch nicht funktioniert.

Ich werde deine Scripte erst Montag austesten können, aber jetzt schon mal vielen vielen Dank! Wenn es bei dir schon funktioniert, kann ich recht zuversichtlich sein!


als Antwort auf: [#521934]

Relink2NewPath_andSuffix_Subfolders_StatusMissing

Didiana
Beiträge gesamt: 5

13. Jan 2014, 08:52
Beitrag # 6 von 9
Beitrag ID: #521958
Bewertung:
(3863 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans!
Habe soeben dein bereinigtes Script, sowie dein eigenes Script ausprobiert.
Letzteres funktionierte bei mir weder mit CC noch mit CS 5.5. Außer den .TIF Bildern wurden andere fehlende Bilder wie z.B. .eps, .psd etc. nicht neu verknüpft.

Ich habe übrigens aber auch den Fehler in meinem Script bzw. eher dem Indesign Dokument gefunden, ich habe zwar daran gedacht im Script die 'oldSuffix' Variable als .JPG zu definieren, habe sie aber im Eifer des Gefechts in meiner Indesign Datei als .jpg eingebaut.
Hachja war ein langer Freitag und ich hab den Wald vor lauter Bäume nicht mehr gesehen...

Vielen Dank für deine Hilfe! Das Script funktioniert und ich bin zufrieden! :)


als Antwort auf: [#521934]
(Dieser Beitrag wurde von Didiana am 13. Jan 2014, 08:54 geändert)

Relink2NewPath_andSuffix_Subfolders_StatusMissing

Schuggi
Beiträge gesamt: 18

11. Feb 2015, 14:58
Beitrag # 7 von 9
Beitrag ID: #536961
Bewertung:
(3060 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen

Ich habe soeben diesen Thread gefunden, bei der Suche nach der Lösung eines Verknüpfungsproblems. Bei mir stellt sich das ganze so ziemlich gleich dar. Nun ist es so, dass ich zwar Profi-Anwenderin bin, aber leider keinen Plan habe, wie man Skripte schreibt resp. erstellt. Wie resp. wo man sie speichert und anwendet, weiss ich. Jetzt wollte ich mal ganz scheu fragen, ob es wohl möglich wäre, mir das fertige Skript irgendwie zur Verfügung zu stellen.

Liebe Grüsse

P.S.: Ich arbeite mit InDesign CC auf OSX 10.6.8


als Antwort auf: [#521958]
(Dieser Beitrag wurde von Schuggi am 11. Feb 2015, 15:02 geändert)

Relink2NewPath_andSuffix_Subfolders_StatusMissing

Hans Haesler
  
Beiträge gesamt: 5826

11. Feb 2015, 15:14
Beitrag # 8 von 9
Beitrag ID: #536963
Bewertung:
(3029 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Schuggi,

ich bin gerade unterwegs, auf der Busfahrt nach Hause.
Sobald ich dort angekommen bin, werde ich Dir das Script zustellen.

Gruss, Hans


als Antwort auf: [#536961]

Relink2NewPath_andSuffix_Subfolders_StatusMissing

Hans Haesler
  
Beiträge gesamt: 5826

11. Feb 2015, 15:51
Beitrag # 9 von 9
Beitrag ID: #536970
Bewertung:
(3001 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Schuggi,

jetzt habe ich Dir das Script per PM zugestellt.

Eigentlich hättest Du so vorgehen können:
– alle Zeilen im Kasten "code" des Beitrags #4 auswählen;
– kopieren;
– in ein neues Fenster eines Texteditors (z.B. "BBEdit") einsetzen;
– unter dem Namen "NeuVerknuepfen.js" speichern.

Nun hoffe ich, dass es damit klappen wird.

Gruss, Hans


als Antwort auf: [#536961]
X

Aktuell

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
14.05.2024

Online
Dienstag, 14. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Prozessoptimierung ist ein Teamsport! Keine Software und keine Maschine allein kann Ihnen helfen, die Effizienzpotenziale Ihres Betriebes maximal auszuschöpfen. Von der Auftragsannahme über die Vorstufe und den Druck bis hin zur Weiterverarbeitung – alles muss optimal ineinandergreifen. Apropos Weiterverarbeitung – in vielen Druckbetrieben fristet sie in Sachen Prozessoptimierung immer noch ein Schattendasein. Dabei liegen hier mittlerweile die größten Einsparpotenziale! In einem Webinar von Horizon und Impressed erfahren Sie, wie Sie diese Einsparungen realisieren können. Horizon, bekannt für innovative Lösungen in der Druckweiterverarbeitung, bietet mit iCE LiNK eine Workflowlösung für die Weiterverarbeitung. iCE LiNK überwacht, visualisiert und analysiert Produktionsabläufe und unterstützt bei der Wartung – damit immer alles reibungslos läuft. Den gleichen Anspruch hat der von Impressed entwickelte Impressed Workflow Server – er ist die smarte PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt. Im Webinar zeigen Ihnen die Experten von Horizon und Impressed, wie beide Lösungen im Team die Effizienz und Produktivität Ihres Betriebes steigern können. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Horizon

https://www.impressed.de/schulung.php?c=sDetail&sid=327

Einsparpotenziale in der Weiterverarbeitung
Veranstaltungen
16.05.2024

Online
Donnerstag, 16. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Nein

Organisator: Impressed / Günther Business Solutions

https://www.impressed.de/schulung.php?c=sDetail&sid=326

Und es geht doch: Automatisierung im Großformatdruck!