macOS標準搭載のテキストエディタ「テキストエディット」の最前面のドキュメントから書式情報を取得し、フォント名とフォントサイズのペアをスタイルを反映させたポップアップメニューで選択。選択したスタイルが該当する箇所を抽出したのちにテキスト化してTextViewで結果を表示します。
–> Download Code-signed AppleScript applet executable with libraries
▲Sample RTF(なんでもOK)
▲添付のAppleScriptアプレットは、初回実行時に制御許可のダイアログが表示されます。OKすれば、2回目以降はダイアログ表示されません
▲書式情報をRTF書類から読み込んで、スタイルを反映させたポップアップメニューで表示。サンプル文をRTF書類から取得しているものの、改行部分だけがヒットしたりとなかなかうまくありません
▲一覧から選択
▲RTF書類から指定書式に相当するテキストを抽出して出力
AppleScript名:指定のフォントとサイズに該当するテキストを抽出する v2.scptd |
— Created 2019-11-29 by Takaaki Naganoya — 2019 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use wgMenuLib : script "wysiwygMenuLib" –WYSIWYGポップアップメニューダイアログ ライブラリ use dtLib : script "dTextView" –TextView表示ライブラリ script spd property fontList : {} property fontSizes : {} property textList : {} property outList : {} property combiList : {} end script set (outList of spd) to {} set (fontList of spd) to {} set (fontSizes of spd) to {} set (textList of spd) to {} set (combiList of spd) to {} –TextEdit書類から書式情報を根こそぎ取得 tell application "TextEdit" tell text of front document set (fontList of spd) to font of every attribute run –フォント名 set (fontSizes of spd) to size of every attribute run –文字サイズ set (textList of spd) to character of every attribute run –文字 end tell end tell –ポップアップメニュー選択用のデータを作成 set aLen to length of (fontList of spd) set menuList to {} set sampleList to {} repeat with i from 1 to aLen set tmpFont to contents of item i of (fontList of spd) set tmpSize to contents of item i of (fontSizes of spd) set tmpSample to (contents of item i of (textList of spd)) as string set tmpList to {tmpFont, tmpSize} if {tmpList} is not in (combiList of spd) then set the end of (combiList of spd) to tmpList set the end of menuList to (tmpFont & " — " & tmpSize as string) & " point ex.:" & tmpSample end if end repeat –WYSIWYGポップアップメニューで項目選択 set paramObj to {myMessage:"Select Attribute", mySubMessage:"Select target attribute", segmentMes:{menuList}, segmentTitles:{"Select combination of font name and size"}, segmentAttributes:(combiList of spd)} set fRes to makeMenuAndcheck(paramObj) of wgMenuLib if fRes = 0 then return copy item (first item of fRes) of (combiList of spd) to {aFont, aSize} –取得した条件にもとづいて、根こそぎ取得した書式と照合を行いつつループ repeat with i from 1 to length of (fontList of spd) set tmpFont to contents of item i of (fontList of spd) set tmpSize to contents of item i of (fontSizes of spd) –文字サイズをざっくり判定することで「大、中、小」といったおおまかな切り分けも可能 if {tmpFont, tmpSize} = {aFont, aSize} then set tmpCon to (contents of item i of (textList of spd)) as string if tmpCon does not contain "•" then –ごみ取り set the end of (outList of spd) to tmpCon end if end if end repeat –結果をTextViewで表示 set aStr to retListedText(outList of spd, return) of me set eRes to (display text view aStr main message "Result" sub message "" with properties {font name:aFont, size:aSize, width:800, height:400}) on retListedText(aList, aSeparator) set aText to "" set curDelim to AppleScript’s text item delimiters set AppleScript’s text item delimiters to aSeparator set aText to aList as text set AppleScript’s text item delimiters to curDelim return aText end retListedText |
More from my site
(Visited 65 times, 1 visits today)