[FIXED] So überprüfen Sie, ob die geöffnete Datei auf Drive – CS6 -Skript gespeichert ist

Ausgabe

Ich möchte eine Funktion schreiben, die eine Reihe von Dateien aus geöffneten Dokumenten erstellt, die sich irgendwo auf einer Festplatte befinden.


Ich möchte keine Dateien in diesem Array, die nirgendwo gespeichert sind.
Mit anderen Worten Dokumente wie: Datei-> Neu-> Datei erstellen-> Diese Datei nirgendwo speichern.


Ich habe diesen Code bisher erstellt:

var docsExistingOnDrive = filteringOpenedDocs();

alert(docsExistingOnDrive);

function filteringOpenedDocs() {

  var imageTypes = [
  /.png$/,
  /.psd$/,
  /.jpg$/,
  /.tif$/,
  /.bmp$/,
  /.gif$/,
  ];

  var openedDocsToProcess = new Array;

  for (var i = 0; i < app.documents.length; i++) {
      for ( var j = 0 ; j < imageTypes.length; j++ ) {
          if ( app.documents[i].name.match(imageTypes[j]) ) {
              openedDocsToProcess.push(app.documents[i]);
          };
      }
  }

  return openedDocsToProcess;
}

Ich habe festgestellt, dass Dokumente, die noch nicht gespeichert wurden, keine Erweiterungen ( png.usw. psd.) im Namen haben. Also habe ich diese Eigenschaft verwendet, um Dateien zu filtern.

Aber ich habe auch einen Fehler in einem Szenario gefunden, in dem Benutzer Dateinamen ( neues Dokument ) mit Erweiterungen ( png.usw. psd.) erstellen können.

Als Ergebnis erhalte ich ein falsches positives Ergebnis in
if (app.documents[i].name.match(imageTypes[j])Bedingung. Und dann fügt es dem Array eine Datei hinzu, die nirgendwo auf dem Laufwerk gespeichert ist openedDocsToProcess.

=============================================== =========================

Hinweise:


Anstatt
if ( app.documents[i].name.match(imageTypes[j])Bedingung zu verwenden:


1. Ich habe versucht,
existsMethode in -> zu verwenden if (app.documents[i].exists), app.documents[i].existsgibt aber immer undefined


2. Ich habe versucht,
pathMethode in -> zu verwenden app.documents[i].path !== null, aber dann erhalte ich unten ” Fehler 8103 ” und das Skript wird beendet. Danke im Voraus.

Geben Sie hier die Bildbeschreibung ein

Lösung

app.documentsgibt ein Array von Document – Objekten zurück.

Dieses Objekt hat bereits eine raffinierte Eigenschaft für Ihren Anwendungsfall:fullName

Wenn eine Datei noch nicht irgendwo auf der Festplatte gespeichert ist, hat diese Eigenschaft keinen Wert. Wenn Sie jedoch versuchen, es aus einem nicht gespeicherten Dokument abzurufen, erhalten Sie leider ein Popup mit einer Fehlermeldung, die im Wesentlichen das Skript beendet.

Um dies zu umgehen, können Sie den Abruf von fullNameinnerhalb eines Try-Catch-Blocks einschließen und einfach Dokumente zum openedDocsToProcessArray hinzufügen, wenn der Versuch nicht fehlschlägt.

var openedDocsToProcess = new Array;
var failed=false;
var temp;
for (var i = 0; i < app.documents.length; i++) 
{
    try 
    {
        failed=false;
        temp=app.documents[i].fullName;
    }
    catch(e)
    {
        failed=true;
    }
    if(!failed)
    {
        openedDocsToProcess.push(app.documents[i]);
    }
}
alert(openedDocsToProcess);


Beantwortet von –
obskur


Antwort geprüft von –
Katrina (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like