Pages書類で選択中のtext item(Pagesでこれを識別するクラスがないのでshape)内のテキストに複数の文字サイズが存在している場合に、特定の文字サイズ部分のみ異なるものに置き換えるAppleScriptです。
▲架空の本のPages書類のうち、処理対象のtext itemを選択状態にして実行
▲どのフォントサイズを置き換えるかをダイアログ選択。リサイズ後の数値を入力するとリサイズ。空欄のままにすると、リサイズしない
AppleScript名:最前面の書類中の選択中のテキストアイテムの文字サイズを、特定サイズのみ対象にして置換 v3.scptd |
— – Created by: Takaaki Naganoya – Created on: 2024/02/16 — – Copyright © 2024 Piyomaru Software, All Rights Reserved — use AppleScript version "2.7" — macOS 10.13 or later use framework "Foundation" use scripting additions use tfLib : script "display text fields" tell application "Pages" tell front document set tmpList to selection repeat with i in tmpList set j to contents of i set tmpC to class of j –選択中のアイテムがshape(text itemを指定したいが、PagesではこのClassは存在しない)の場合のみ処理 if tmpC is equal to shape then –最大サイズの文字のみ抽出 set cRes to (size of every character of object text of j) set uRes to removeDuplicates(cRes) of me set selection to {j} –ダイアログ表示 set strList to stringfyListItems(uRes) of me set blankList to makeBlankListByIndicatedItem(strList, "") of me set dRes to confirm text fields main message "テキストアイテムの文字サイズ置換" sub message "置換しない場合には空欄のまま。サイズはポイント数で指定" key list strList value list blankList if dRes = false then exit repeat –文字サイズ置換 repeat with ii from 1 to (length of strList) set targSize to (contents of item ii of strList) as real —From Size set repSize to contents of item ii of dRes –To Size if repSize is not equal to "" then set repSizeNum to repSize as real set size of (every character of object text of j whose size is targSize) to repSizeNum end if end repeat end if end repeat end tell end tell –指定リストの項目数によって、空白アイテムが入ったリストを返す on makeBlankListByIndicatedItem(aList, blankItem) set newList to {} set aLen to length of aList repeat aLen times set the end of newList to blankItem end repeat return newList end makeBlankListByIndicatedItem –リストの全項目をテキスト化 on removeDuplicates(aList) set newList to {} repeat with i from 1 to (length of aList) set anItem to item 1 of aList set aList to rest of aList if {anItem} is not in aList then set end of newList to anItem end repeat return newList end removeDuplicates –リスト内の要素をすべてテキストに変換する on stringfyListItems(a as list) set newL to {} repeat with i in a set j to contents of i set j to j as string set the end of newL to j end repeat return newL end stringfyListItems |