I hope my script can tell you what to do: gist
Loading stack of images (one layer above another):
function loadStack(name,size){
var d;
for (var i = 0; i < size; i++) {
var fileNum = sprintf("%05d",i);
var f = new File(sourcePath+'fr'+name+'_'+fileNum+'.png');
// you can use your own file selection
if(i==0){
// operating on first file in sequence
app.open(f);
d = app.activeDocument;
d.activeLayer.name = fileNum;
}else{
// adding file content to new layer
d.artLayers.add();
d.activeLayer.name = fileNum;
app.open(f);
app.activeDocument.selection.selectAll();
app.activeDocument.selection.copy();
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
d.paste();
}
}
}
Next I simply do rows
with my stack:
function doRows(rows,cols){
var d = app.activeDocument;
var w = d.width;
var h = d.height;
d.resizeCanvas(w*cols,h*rows,AnchorPosition.TOPLEFT);
for (var j = 0; j < cols; j++) {
for (var i = 0; i < rows; i++) {
// using numbered layers
var fileNum = sprintf("%05d", j*rows+i );
d.artLayers.getByName(fileNum).translate(w*j, h*i);
}
}
}