以前に作った、Pagesのページ中のテキストアイテムのうち最大文字サイズのものを抽出するAppleScriptの強化版です。その最大文字サイズの文字を含むテキストアイテムの中から、さらに最大文字サイズのテキストを取り出します。
タイトル部分(と思われるテキストアイテム)から、さらに最大文字サイズのものだけを抽出。
用途は、Blog新アーカイブ本の作成時に書類からタイトルを取り出す処理を行えないか実験してみたものです。このページだけ、この例外のデータだったのですが、あとから考えれば文字サイズの小さなサブタイトル的なものは別のテキストアイテム(ボックス)に分ければよかっただろうかと。
AppleScript名:最前面の書類中のテキストアイテムの文字サイズが最大のものの中に入っている最大のテキストを求める.scptd |
— – Created by: Takaaki Naganoya – Created on: 2020/06/12 – Modified on: 2021/04/10 — – Copyright © 2020 Piyomaru Software, All Rights Reserved — use AppleScript version "2.4" — Yosemite (10.10) or later use framework "Foundation" use scripting additions property NSString : a reference to current application’s NSString property NSCharacterSet : a reference to current application’s NSCharacterSet property NSMutableArray : a reference to current application’s NSMutableArray set rList to {} tell application "Pages" tell front document set tmpList to every text item if length of tmpList = 0 then return –テキストアイテムがない場合には処理終了 set szList to size of object text of every text item set aMaxPoint to calcMax(szList) of me –最大の文字サイズを取得 –文字サイズが最大のテキストアイテムを抽出 –set resList to object text of every text item whose size of object text is aMaxPoint set resList to every text item whose size of object text is aMaxPoint repeat with ii in resList –指定のtet item内の文字のサイズをすべて取得 set cList to size of every character of object text of ii –文字サイズのうち最大のものを取得 set cMax to calcMax(cList) of me –最大サイズの文字のみ抽出 set cRes to (every character of object text of ii whose size = cMax) set cText to cRes as string –取得したテキストの前後の改行などを削除してクリーンアップ set c2Text to cleanUpTextFromHEadAndTail(cText) of me –何か結果が得られていたら、リストに加える if c2Text is not equal to "" then set the end of rList to c2Text end if end repeat end tell end tell return rList –> {"Shane StanleyのScript Toolの変遷"} on calcMax(aList as list) set nArray to (NSMutableArray’s arrayWithArray:aList) set maxRes to (nArray’s valueForKeyPath:"@max.self")’s doubleValue() return maxRes end calcMax on cleanUpTextFromHEadAndTail(aStr) set aString to NSString’s stringWithString:aStr set bStr to (aString’s stringByTrimmingCharactersInSet:(NSCharacterSet’s whitespaceAndNewlineCharacterSet())) return bStr as string end cleanUpTextFromHEadAndTail |
More from my site
(Visited 43 times, 1 visits today)