クリップボードに入っているデータを書式付きテキストとして評価して取得し、そのうち最大のフォントサイズを取得するAppleScriptです。
クリップボードに入っているデータをプレーンテキストとして取得して処理することはよくやっていたのですが、書式付きテキストとして処理することはあまりやっていなかったので、試してみたものです。
AppleScript名:クリップボード中の書式つきテキストのフォントサイズを取得する.scptd |
–Created 2015-08-03 by Shane Stanley –Modified 2019-02-06 by Takaaki Naganoya use AppleScript version "2.4" use scripting additions use framework "Foundation" use framework "AppKit" — for NSPasteboard property NSFont : a reference to current application’s NSFont property NSColor : a reference to current application’s NSColor property NSString : a reference to current application’s NSString property NSFontAttributeName : a reference to current application’s NSFontAttributeName property NSMutableAttributedString : a reference to current application’s NSMutableAttributedString property NSForegroundColorAttributeName : a reference to current application’s NSForegroundColorAttributeName –クリップボードの内容をNSAttributedStringに set anAttr to my getClipboardASStyledText() if anAttr = missing value then return 0 set maxSize to getAttributeStringFontSize(anAttr) of me –> 13.0 — クリップボードの内容をNSAttributedStringとして取り出して返す on getClipboardASStyledText() try set theNSPasteboard to current application’s NSPasteboard’s generalPasteboard() set theAttributedStringNSArray to theNSPasteboard’s readObjectsForClasses:({current application’s NSAttributedString}) options:(missing value) set theNSAttributedString to theAttributedStringNSArray’s objectAtIndex:0 return theNSAttributedString on error return missing value end try end getClipboardASStyledText on getAttributeStringFontSize(theStyledText) set maxSize to 0 set thePureString to theStyledText’s |string|() –pure string from theStyledText set theLength to theStyledText’s |length|() set startIndex to 0 repeat until (startIndex = theLength) set {theAtts, theRange} to theStyledText’s attributesAtIndex:startIndex longestEffectiveRange:(reference) inRange:{startIndex, theLength – startIndex} –Font set aFont to (theAtts’s valueForKeyPath:"NSFont") if aFont is not equal to missing value then set aDFontName to aFont’s displayName() set aDFontSize to (aFont’s pointSize()) as real end if if maxSize < aDFontSize then set maxSize to aDFontSize end if set startIndex to current application’s NSMaxRange(theRange) end repeat return maxSize end getAttributeStringFontSize |
More from my site
(Visited 52 times, 1 visits today)