I can see I in the first post forgot to mention, that I used ChatGPT for this.
So I have tried again.
// This script exports content from the last five text frames on each page to a CSV file with each text frame's content in separate columns in reverse order.
// Line breaks within the content are escaped.
var csvFile = File.saveDialog("Save CSV File", "*.csv");
if (csvFile) {
csvFile.open("w");
csvFile.writeln("Frame 1,Frame 2,Frame 3,Frame 4,Frame 5,Page");
var document = app.activeDocument;
for (var pageIndex = 0; pageIndex < document.pages.length; pageIndex++) {
var page = document.pages[pageIndex];
var row = [pageIndex + 1];
for (var frameIndex = Math.max(0, page.textFrames.length - 5); frameIndex < page.textFrames.length; frameIndex++) {
var frame = page.textFrames[frameIndex];
var content = frame.contents.replace(/"/g, '""').replace(/\r/g, '\\r').replace(/\n/g, '\\n'); // Escape double quotes and line breaks within content
row.unshift('"' + content + '"'); // Insert at the beginning to reverse the order
}
// Fill remaining columns with empty strings if needed
var emptyColumns = Math.max(0, 5 - row.length + 1);
for (var j = 0; j < emptyColumns; j++) {
row.unshift('""');
}
csvFile.writeln(row.join(","));
}
csvFile.close();
alert("CSV export complete.");
}
This code takes a document like this:
And produces this output:
Frame 1,Frame 2,Frame 3,Frame 4,Frame 5,Page
"TitleA","Info 1A","Info 2A","Info 3A","CopyA copyA copyA",1
"TitleB","Info 1B","Info 2B","Info 3B","CopyB copyB copyB",2
"TitleC","Info 1C","Info 2C","Info 3C","CopyC copyC copyC",3