如何在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