Ok, here you go:
function getData () {
// Create a dialog
var myDialog = new Window("dialog", "Scale Text Frames");
myDialog.orientation = "column";
myDialog.alignChildren = "left";
// Function to get paragraph styles
function getParagraphStyles() {
var styles = app.activeDocument.paragraphStyles;
var styleNames = []; // Default "None" style
for (var i = 1; i < styles.length; i++) {
styleNames.push(styles[i].name);
}
return styleNames;
}
// Paragraph Style Dropdown
var stylePanel = myDialog.add("panel");
stylePanel.text = "Paragraph Style:";
var styleDropdown = stylePanel.add("dropdownlist", undefined, getParagraphStyles());
styleDropdown.selection = 0;
// Page Range Input
var pageRangePanel = myDialog.add("panel");
pageRangePanel.text = "Page Range (e.g., 1-5):";
var pageRangeInput = pageRangePanel.add("edittext");
pageRangeInput.text = "2-3";
// Scale Factor Input
var scalePanel = myDialog.add("panel");
scalePanel.text = "Scale Factor (%):";
var scaleFactorInput = scalePanel.add("edittext");
scaleFactorInput.text = "150";
// OK and Cancel Buttons
var buttonGroup = myDialog.add("group");
var okButton = buttonGroup.add("button", undefined, "OK");
var cancelButton = buttonGroup.add("button", undefined, "Cancel");
pageRangeInput.onDeactivate = function () {
if (!/^\d+-\d+$/.test (this.text)) {
alert("Invalid page range format. Use 'start-end', e.g., '1-5'.");
}
}
if (myDialog.show() == 2) {
exit();
}
return {
selectedStyle: styleDropdown.selection.text,
pageRange: pageRangeInput.text,
scaleFactor: parseFloat(scaleFactorInput.text),
}
}
function scaleFrames (d) {
app.windows[0].transformReferencePoint = AnchorPoint.CENTER_ANCHOR
var startPage = parseInt(d.pageRange.split("-")[0]) - 1;
var endPage = parseInt(d.pageRange.split("-")[1]) - 1;
var pages = app.documents[0].pages.everyItem().getElements();
function scaleFramesSub (frames) {
for (var i = 0; i < frames.length; i++) {
if (frames[i].paragraphs[0].appliedParagraphStyle.name == d.selectedStyle) {
frames[i].horizontalScale = frames[i].verticalScale = d.scaleFactor;
}
}
}
for (var i = startPage; i <= endPage; i++) {
scaleFramesSub (pages[i].textFrames.everyItem().getElements());
}
}
var data = getData();
scaleFrames (data);