[FIXED] So lesen

Ausgabe

So lesen Sie .xlsx-Daten und verschieben sie in ein .js-Skript für Photoshop defaultkrt0iuh8hlot

Ich baue eine Automatisierung für die Arbeit auf und habe meine Grenze des bequemen Wissens in Skripterstellung erreicht.

Ich habe eine .xlsx-Datei, in der:

Spalten A1 bis A20 stellen ein Design dar, das wir erstellt haben.

Spalte B1 bis B20 enthält Listen mit farbigen Hintergrundvorlagen für jedes Design in Spalte A:

Mein Excel-Dokument

Ich habe auch einen Ordner mit PNG-Dateien, deren Dateinamen genau mit den in Spalte A angegebenen Namen übereinstimmen.

Mein Skript verwendet Photoshop-Batching, um jeweils eine Datei (zB: XY-111.png) in diesem Ordner zu öffnen.

Platzieren Sie diese .png auf allen Vorlagen (z. B.: Temp1, Temp3, Temp5) und speichern Sie jede als .jpg (mit einem anderen Skript).

Screenshot von VS-Code

Der obige Code funktioniert, aber statt

excelArray.push (Temp1, Temp2, Temp3)

Ich möchte die Daten in Spalte B NUR dann in das Array verschieben, wenn app.documents [0] mit Spalte A übereinstimmt.

////////////////////////////////////////////////// ////////////////////////////////////////////////

Der Code:

#target photoshop

var Temp1 = "/Temp1.psd"
var Temp2 = "/Temp2.psd"
var Temp3 = "/Temp3.psd"
var Temp4 = "/Temp4.psd"
var Temp5 = "/Temp5.psd"
var Temp6 = "/Temp6.psd"
var Temp7 = "/Temp7.psd"
var Temp8 = "/Temp8.psd"
var Temp9 = "/Temp9.psd"
var Temp10 = "/Temp10.psd"

var picForSim = app.documents[0];

var excelArray = [];

excelArray.push(Temp1, Temp2, Temp3);

for (var i = 0; i < excelArray.length; i++){
if (picForSim.name.charAt(0) === "W"){
//alert(excelArray[i])
app.open(new File(excelArray[i]));
app.doAction(("WGARMENTS-ArtPlace"), ("ProductActions.ATN"))
} else {
//alert(excelArray[i])
app.open(new File(excelArray[i]));
app.doAction(("GARMENTS-ArtPlace"), ("ProductActions.ATN"))
}
}

////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////

Ich habe ein node.js-Tutorial gemacht und habe das Gefühl, das Konzept des Abrufens von Daten aus Excel zu verstehen, aber ich habe einige Probleme, die Punkte zu verbinden und die Informationen in mein Skript zu bekommen.

jede Hilfe wäre willkommen!

Lösung

Wenn Ihre.xlxs-Datei als .csv exportiert wird, sieht sie so aus:

WXY-111,"Temp1, Temp2, Temp3, Temp4"
WXY-222,"Temp2, Temp3, Temp4, Temp5"
WXY-333,"Temp3, Temp4, Temp5, Temp6"
YX-111,"Temp4, Temp5, Temp6, Temp7"
XY-222,"Temp5, Temp6, Temp7, Temp8"
XY-333,"Temp6, Temp7, Temp8, Temp9"

Sie können die Textdatei so in Photoshop einlesen

// Reference to the csv file
var csvFile = "D:\\temp\\mycsv.csv"; // change this!

// automatically read in first file
var theFile = new File(csvFile);

//read in file 
var csvArr = []; // array to store CSV
var l = 0;
var csvFile = new File(theFile);
csvFile.open('r');
while(!csvFile.eof)
{
   var line = csvFile.readln();
   if (line != null && line.length >0)
   {
      csvArr[l++] = line;
   }
   
}
csvFile.close();

// create an array so we can use the data
var textArr = [];
var msg = "";

for (var i = 0; i< csvArr.length; i++)
{
   var line = csvArr[i];
   var aStr = line.slice(0, line.indexOf(","));
   var bStr = line.slice(line.indexOf(",") + 1);

   // replace quotes with nothing
   bStr = bStr.replace(/\"/gm, "");

   // split column b into seperate elements
   var sp = bStr.split(",");
   textArr.push([aStr, sp[0], sp[1], sp[2], sp[3]]);
}


// let's loop over the array and see what it says...
for (var i = 0; i< textArr.length; i++)
{
   for (var j = 0; j< textArr[i].length; j++)
   {
      msg += textArr[i][j] + " , ";
   }
   
   msg += "\n";
}

alert(msg);

// you can access the info like this: 
var data = textArr[4][1]; 
alert(data); // temp 5


Beantwortet von –
Ghoul Fool


Antwort geprüft von –
Robin (FixError Admin)

0 Shares:
Leave a Reply

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

You May Also Like