如何在.js脚本中读取.xlsx数据并推送至数组以进行photoshop



如何在photoshop的.js脚本中读取.xlsx数据并推送到数组默认krt0iuh8批次

我正在为工作构建一些自动化,并且在脚本方面已经达到了我的极限。

我有一个.xlsx文件,其中:

A1至A20列代表我们创建的设计。

B1至B20列包含A列中每个设计的颜色背景模板列表:

我的Excel文档

我还有一个文件夹,里面有.png文件,文件名与a栏中给出的名称完全匹配。

我的脚本使用photoshop批处理在文件夹中一次打开一个文件(例如:XY-111.png(

将.png放在所有模板上(例如:Temp1、Temp3、Temp5(,并将每个模板保存为.jpg(使用不同的脚本(。

VS代码屏幕截图

上述代码有效,但不是

excelArray.push(Temp1,Temp2,Temp3(

我只想在app.documents[0]与A列匹配的情况下将B列中的数据推送到数组。

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

代码:

#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"))
}
}

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

我参加了node.js教程,我觉得我理解从excel获取数据的概念,但我在连接点和将信息输入脚本时遇到了一些困难。

任何帮助都将不胜感激!

如果你的.xlxs文件被导出为.csv,它看起来像这样:

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"

你可以像这个一样将文本文件读入Photoshop

// 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

最新更新