AppleScript名:TextEditの本文取得 |
tell application "TextEdit" tell front document set a to text of it end tell end tell |
タグ: 10.12savvy
CotEditor 3の選択範囲を書き換える
AppleScript名:CotEditor 3の選択範囲を書き換える |
tell application "CotEditor" tell document 1 properties of selection –> {range:{0, 4}, class:text selection, line range:{1, 1}, contents:"似ている"} set contents of selection to "ほぼおなじ" end tell end tell |
CotEditorでオープン中の最前面の書類の本文テキストを取得する
AppleScript名:CotEditorでオープン中の最前面の書類の本文テキストを取得する |
set aRes to getCotEditorText() of me
on getCotEditorText() tell application "CotEditor" if (count every document) = 0 then return false tell front document set aText to contents end tell end tell end getCotEditorText |
CotEditorの最前面で表示中のDocumentを縦書き表示に
CotEditorで表示中のテキストファイルを、GUI Scripting経由で縦書き表示するAppleScriptです。
CotEditorの途中のバージョンでメニュー構成が変更になったため、本Scriptは動かなくなりました。
とりあえず、メニュー変更に追従して書き換えを行なって使っていましたが、根本的な解決策を1024jpさんに教えてもらえたので(Xattributeの書き換え)、そちらをおすすめします。
AppleScript名:CotEditorの最前面で表示中のDocumentを縦書き表示に |
makeWinVertical() of me
on makeWinVertical() activate application "CotEditor" tell application "System Events" tell process "CotEditor" try click menu item "縦書きで表示" of menu 1 of menu bar item "フォーマット" of menu bar 1 end try end tell end tell end makeWinVertical |
表示中のCotEditor書類と同じフォルダでラベルがついているものから選択して表示
AppleScript名:表示中のCotEditor書類と同じフォルダでラベルがついているものから選択して表示 |
— Created 2017-12-15 by Takaaki Naganoya — 2017 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use bPlus : script "BridgePlus" use mdLib : script "Metadata Lib" version "1.0.0" property NSURLIsDirectoryKey : a reference to current application’s NSURLIsDirectoryKey property NSDirectoryEnumerationSkipsHiddenFiles : a reference to current application’s NSDirectoryEnumerationSkipsHiddenFiles property NSPredicate : a reference to current application’s NSPredicate property NSMutableArray : a reference to current application’s NSMutableArray property NSDirectoryEnumerationSkipsPackageDescendants : a reference to current application’s NSDirectoryEnumerationSkipsPackageDescendants property NSFileManager : a reference to current application’s NSFileManager property |NSURL| : a reference to current application’s |NSURL| property NSDirectoryEnumerationSkipsSubdirectoryDescendants : a reference to current application’s NSDirectoryEnumerationSkipsSubdirectoryDescendants property NSArray : a reference to current application’s NSArray property NSSortDescriptor : a reference to current application’s NSSortDescriptor property SMSForder : a reference to current application’s SMSForder load framework tell application "CotEditor" set dCount to count every document if dCount = 0 then return tell front document set curPath to path end tell tell window 1 set aBounds to bounds end tell end tell set aPath to current application’s NSString’s stringWithString:curPath set fileName to (aPath’s lastPathComponent()) –ファイル名 set pathExtension to aPath’s pathExtension() as string set parentFol to (aPath’s stringByDeletingLastPathComponent()) as string —親フォルダ –同じフォルダから同じ拡張子のファイルのファイル名を取得 –set fList to my getFilesByIncludedStringInName:(pathExtension) fromDirectory:(parentFol) exceptPackages:(true) set fList to spotlightFindByLabels({1, 2, 3, 4, 5, 6, 7}, parentFol) of me –昇順ソート set aArray to NSArray’s arrayWithArray:fList set desc1 to NSSortDescriptor’s sortDescriptorWithKey:"self" ascending:true selector:"localizedCaseInsensitiveCompare:" set bArray to aArray’s sortedArrayUsingDescriptors:{desc1} set cList to bArray as list set selRes to choose from list cList if selRes = false then return –Cancel set newPath to contents of first item of selRes tell application "CotEditor" set oldDoc to front document open (POSIX file newPath) as alias tell window 1 set bounds to aBounds end tell close oldDoc without saving end tell makeWinVertical() of me –縦書き表示 –Make CotEditor’s front window to Vertical display mode (Tategaki) on makeWinVertical() activate application "CotEditor" tell application "System Events" tell process "CotEditor" try click menu item "縦書きで表示" of menu 1 of menu bar item "フォーマット" of menu bar 1 end try end tell end tell end makeWinVertical on retFileFormatUTI(aExt as string) if aExt begins with "." then set aExt to text 2 thru -1 of aExt return (current application’s SMSForder’s UTIForExtension:aExt) end retFileFormatUTI on spotlightFindByLabels(aLabelList as list, thePath as string) set aList to makeRepeatinglList(length of aLabelList, "kMDItemFSLabel == %@") set aStr to retStrFromArrayWithDelimiter(aList, " OR ") of me set fRes to mdLib’s searchFolders:{thePath} searchString:aStr searchArgs:aLabelList return fRes end spotlightFindByLabels –リストを指定デリミタをはさんでテキスト化 on retStrFromArrayWithDelimiter(aList as list, aDelim as string) set anArray to current application’s NSArray’s arrayWithArray:aList return (anArray’s componentsJoinedByString:aDelim) as string end retStrFromArrayWithDelimiter –指定回数、指定アイテムを連結したリストを作成 on makeRepeatinglList(hitNum as integer, hitItem as string) set outList to {} repeat hitNum times set the end of outList to hitItem end repeat return outList end makeRepeatinglList |
表示中のCotEditor書類と同じフォルダで各書類の1行目で選択して表示
AppleScript名:表示中のCotEditor書類と同じフォルダで各書類の1行目で選択して表示 |
— Created 2017-12-15 by Takaaki Naganoya — 2017 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use bPlus : script "BridgePlus" use mdLib : script "Metadata Lib" version "1.0.0" use jLib : script "japaneseTextEncodingDetector" property NSURLIsDirectoryKey : a reference to current application’s NSURLIsDirectoryKey property NSDirectoryEnumerationSkipsHiddenFiles : a reference to current application’s NSDirectoryEnumerationSkipsHiddenFiles property NSPredicate : a reference to current application’s NSPredicate property NSMutableArray : a reference to current application’s NSMutableArray property NSDirectoryEnumerationSkipsPackageDescendants : a reference to current application’s NSDirectoryEnumerationSkipsPackageDescendants property NSFileManager : a reference to current application’s NSFileManager property |NSURL| : a reference to current application’s |NSURL| property NSDirectoryEnumerationSkipsSubdirectoryDescendants : a reference to current application’s NSDirectoryEnumerationSkipsSubdirectoryDescendants property NSArray : a reference to current application’s NSArray property NSSortDescriptor : a reference to current application’s NSSortDescriptor property SMSForder : a reference to current application’s SMSForder load framework tell application "CotEditor" set dCount to count every document if dCount = 0 then return tell front document set curPath to path end tell tell window 1 set aBounds to bounds end tell end tell set aPath to current application’s NSString’s stringWithString:curPath set fileName to (aPath’s lastPathComponent()) –ファイル名 set pathExtension to aPath’s pathExtension() as string set parentFol to (aPath’s stringByDeletingLastPathComponent()) as string —親フォルダ –同じフォルダから同じ拡張子のファイルのファイル名を取得 set fList to my getFilesByIncludedStringInName:(pathExtension) fromDirectory:(parentFol) exceptPackages:(true) –昇順ソート set aArray to NSArray’s arrayWithArray:fList set desc1 to NSSortDescriptor’s sortDescriptorWithKey:"self" ascending:true selector:"localizedCaseInsensitiveCompare:" set bArray to aArray’s sortedArrayUsingDescriptors:{desc1} set cList to bArray as list –ダイアログ表示用のデータを作成 set ccList to {} repeat with i in cList set j to POSIX path of (i as string) set aStr to readJapanesTextFileWithGuessingEncoding(j) of jLib if aStr = missing value or aStr = false then display dialog "Encoding Error" return end if set aPath to (current application’s NSString’s stringWithString:j) set fileName to (aPath’s lastPathComponent()) as string –ファイル名 set aFirst to first item of paragraphs of aStr set the end of ccList to (fileName & " / " & aFirst) end repeat set aMes to "項目を選択してください" set selRes to retItemFromListByItemNo(ccList, aMes) of me if selRes = false then return –Cancel set newPath to contents of item selRes of cList tell application "CotEditor" set oldDoc to front document open (POSIX file newPath) as alias tell window 1 set bounds to aBounds end tell close oldDoc without saving end tell makeWinVertical() of me –縦書き表示 –Make CotEditor’s front window to Vertical display mode (Tategaki) on makeWinVertical() activate application "CotEditor" tell application "System Events" tell process "CotEditor" try click menu item "縦書きで表示" of menu 1 of menu bar item "フォーマット" of menu bar 1 end try end tell end tell end makeWinVertical on retFileFormatUTI(aExt as string) if aExt begins with "." then set aExt to text 2 thru -1 of aExt return (current application’s SMSForder’s UTIForExtension:aExt) end retFileFormatUTI on spotlightFindByLabels(aLabelList as list, thePath as string) set aList to makeRepeatinglList(length of aLabelList, "kMDItemFSLabel == %@") set aStr to retStrFromArrayWithDelimiter(aList, " OR ") of me set fRes to mdLib’s searchFolders:{thePath} searchString:aStr searchArgs:aLabelList return fRes end spotlightFindByLabels –リストを指定デリミタをはさんでテキスト化 on retStrFromArrayWithDelimiter(aList as list, aDelim as string) set anArray to current application’s NSArray’s arrayWithArray:aList return (anArray’s componentsJoinedByString:aDelim) as string end retStrFromArrayWithDelimiter –指定回数、指定アイテムを連結したリストを作成 on makeRepeatinglList(hitNum as integer, hitItem as string) set outList to {} repeat hitNum times set the end of outList to hitItem end repeat return outList end makeRepeatinglList –指定フォルダ内の指定文字列を含むファイル名のファイルをPOSIX pathのlistで抽出する on getFileNamesByIncludedStringInName:(fileNameStr as string) fromDirectory:(sourceFolder) exceptPackages:(packageF as boolean) set fileManager to NSFileManager’s defaultManager() set aURL to |NSURL|’s fileURLWithPath:sourceFolder set theOptions to ((NSDirectoryEnumerationSkipsPackageDescendants) as integer) + ((NSDirectoryEnumerationSkipsHiddenFiles) as integer) + ((NSDirectoryEnumerationSkipsSubdirectoryDescendants) as integer) set directoryContents to fileManager’s contentsOfDirectoryAtURL:aURL includingPropertiesForKeys:{} options:theOptions |error|:(missing value) set findPredicates to NSPredicate’s predicateWithFormat_("lastPathComponent CONTAINS %@", fileNameStr) set foundItemList to directoryContents’s filteredArrayUsingPredicate:findPredicates –Remove Folders From found URL Array set anArray to NSMutableArray’s alloc()’s init() repeat with i in foundItemList set j to contents of i set {theResult, isDirectory} to (j’s getResourceValue:(reference) forKey:(NSURLIsDirectoryKey) |error|:(missing value)) –Collect files if (isDirectory as boolean = false) then (anArray’s addObject:j) else if (packageF = false) then –Allow Package files? set {theResult, isPackage} to (j’s getResourceValue:(reference) forKey:(current application’s NSURLIsPackageKey) |error|:(missing value)) if (isPackage as boolean) = true then (anArray’s addObject:j) end if end if end repeat return (anArray’s valueForKey:"lastPathComponent") as list end getFileNamesByIncludedStringInName:fromDirectory:exceptPackages: –指定フォルダ内の指定文字列を含むファイル名のファイルをPOSIX pathのlistで抽出する on getFilesByIncludedStringInName:(fileNameStr as string) fromDirectory:(sourceFolder) exceptPackages:(packageF as boolean) set fileManager to NSFileManager’s defaultManager() set aURL to |NSURL|’s fileURLWithPath:sourceFolder set theOptions to ((NSDirectoryEnumerationSkipsPackageDescendants) as integer) + ((NSDirectoryEnumerationSkipsHiddenFiles) as integer) + ((NSDirectoryEnumerationSkipsSubdirectoryDescendants) as integer) set directoryContents to fileManager’s contentsOfDirectoryAtURL:aURL includingPropertiesForKeys:{} options:theOptions |error|:(missing value) set findPredicates to NSPredicate’s predicateWithFormat_("lastPathComponent CONTAINS %@", fileNameStr) set foundItemList to directoryContents’s filteredArrayUsingPredicate:findPredicates –Remove Folders From found URL Array set anArray to NSMutableArray’s alloc()’s init() repeat with i in foundItemList set j to contents of i set {theResult, isDirectory} to (j’s getResourceValue:(reference) forKey:(NSURLIsDirectoryKey) |error|:(missing value)) –Collect files if (isDirectory as boolean = false) then (anArray’s addObject:j) else if (packageF = false) then –Allow Package files? set {theResult, isPackage} to (j’s getResourceValue:(reference) forKey:(current application’s NSURLIsPackageKey) |error|:(missing value)) if (isPackage as boolean) = true then (anArray’s addObject:j) end if end if end repeat return (anArray’s valueForKey:"path") as list end getFilesByIncludedStringInName:fromDirectory:exceptPackages: –リストから選択してアイテム番号を返す on retItemFromListByItemNo(aList, aMes) set aRes to choose from list aList with prompt aMes if aRes = false then return 0 set aRes to contents of item 1 of aRes set hitNum to 1 repeat with i in aList set j to contents of i if j is equal to aRes then exit repeat end if set hitNum to hitNum + 1 end repeat return hitNum end retItemFromListByItemNo |
表示中のCotEditor書類の「次」のファイルを縦書きでオープン
AppleScript名:表示中のCotEditor書類の「次」のファイルを縦書きでオープン |
— Created 2017-12-15 by Takaaki Naganoya — 2017 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use bPlus : script "BridgePlus" –http://piyocast.com/as/archives/5034 property |NSURL| : a reference to current application’s |NSURL| property NSArray : a reference to current application’s NSArray property NSString : a reference to current application’s NSString property SMSForder : a reference to current application’s SMSForder property NSPredicate : a reference to current application’s NSPredicate property NSFileManager : a reference to current application’s NSFileManager property NSMutableArray : a reference to current application’s NSMutableArray property NSSortDescriptor : a reference to current application’s NSSortDescriptor property NSURLIsPackageKey : a reference to current application’s NSURLIsPackageKey property NSURLIsDirectoryKey : a reference to current application’s NSURLIsDirectoryKey property NSDirectoryEnumerationSkipsHiddenFiles : a reference to current application’s NSDirectoryEnumerationSkipsHiddenFiles property NSDirectoryEnumerationSkipsPackageDescendants : a reference to current application’s NSDirectoryEnumerationSkipsPackageDescendants property NSDirectoryEnumerationSkipsSubdirectoryDescendants : a reference to current application’s NSDirectoryEnumerationSkipsSubdirectoryDescendants load framework tell application "CotEditor" set dCount to count every document if dCount = 0 then return tell front document set curPath to path end tell tell window 1 set aBounds to bounds end tell end tell set aPath to NSString’s stringWithString:curPath set fileName to (aPath’s lastPathComponent()) –ファイル名 set pathExtension to aPath’s pathExtension() as string set parentFol to (aPath’s stringByDeletingLastPathComponent()) as string —親フォルダ –同じフォルダから同じ拡張子のファイルのファイル名を取得 set fList to my getFilesByIncludedStringInName:(pathExtension) fromDirectory:(parentFol) exceptPackages:(true) –昇順ソート set aArray to NSArray’s arrayWithArray:fList set desc1 to NSSortDescriptor’s sortDescriptorWithKey:"self" ascending:true selector:"localizedCaseInsensitiveCompare:" set bArray to aArray’s sortedArrayUsingDescriptors:{desc1} –ファイル名検索 set aIndex to (SMSForder’s indexesOfItem:fileName inArray:bArray inverting:false) as list if aIndex = {} then display notification "Error: File Not Found" return end if set bIndex to (contents of first item of aIndex) + 1 + 1 –0 based to 1 based conversion & next one set aLen to length of (bArray as list) if bIndex > aLen then display notification "Error: Out of bounds" return end if set newFile to contents of item bIndex of (bArray as list) set newPath to parentFol & "/" & newFile tell application "CotEditor" set oldDoc to front document open (POSIX file newPath) as alias tell window 1 set bounds to aBounds end tell close oldDoc without saving end tell makeWinVertical() of me –縦書き表示 –指定フォルダ内の指定文字列を含むファイル名のlistを抽出する on getFilesByIncludedStringInName:(fileNameStr as string) fromDirectory:(sourceFolder) exceptPackages:(packageF as boolean) set fileManager to NSFileManager’s defaultManager() set aURL to |NSURL|’s fileURLWithPath:sourceFolder set theOptions to (NSDirectoryEnumerationSkipsPackageDescendants as integer) + (NSDirectoryEnumerationSkipsHiddenFiles as integer) + (NSDirectoryEnumerationSkipsSubdirectoryDescendants as integer) set directoryContents to fileManager’s contentsOfDirectoryAtURL:aURL includingPropertiesForKeys:{} options:theOptions |error|:(missing value) set findPredicates to NSPredicate’s predicateWithFormat_("lastPathComponent CONTAINS %@", fileNameStr) set foundItemList to directoryContents’s filteredArrayUsingPredicate:findPredicates –Remove Folders From found URL Array set anArray to NSMutableArray’s alloc()’s init() repeat with i in foundItemList set j to contents of i set {theResult, isDirectory} to (j’s getResourceValue:(reference) forKey:(NSURLIsDirectoryKey) |error|:(missing value)) –Collect files if (isDirectory as boolean = false) then (anArray’s addObject:j) else if (packageF = false) then –Allow Package files? set {theResult, isPackage} to (j’s getResourceValue:(reference) forKey:(NSURLIsPackageKey) |error|:(missing value)) if (isPackage as boolean) = true then (anArray’s addObject:j) end if end if end repeat return (anArray’s valueForKey:"lastPathComponent") as list end getFilesByIncludedStringInName:fromDirectory:exceptPackages: –Make CotEditor’s front window to Vertical display mode (Tategaki) on makeWinVertical() activate application "CotEditor" tell application "System Events" tell process "CotEditor" try click menu item "縦書きで表示" of menu 1 of menu bar item "フォーマット" of menu bar 1 end try end tell end tell end makeWinVertical |
CotEditorですべてのドキュメントを破棄してクローズ
AppleScript名:CotEditorですべてのドキュメントを破棄してクローズ |
tell application "CotEditor" tell every document close without saving end tell end tell |
CotEditorで指定テキストによる新規ドキュメント作成
AppleScript名:CotEditorで指定テキストによる新規ドキュメント作成 |
set aCon to "あ" makeNewCotEditorDoc(aCon) of me on makeNewCotEditorDoc(aCon) tell application "CotEditor" activate set newDoc to make new document tell newDoc set contents to aCon end tell end tell end makeNewCotEditorDoc |
CotEditorでPOSIX pathをオープンする
AppleScript名:CotEditorでPOSIX pathをオープンする |
set aPath to "/System/Library/Frameworks/Quartz.framework" & "/Versions/A/Frameworks/PDFKit.framework/Resources/" & "BridgeSupport/PDFKit.bridgesupport"
tell application "CotEditor" open aPath end tell |
CotEditorのコンソールにログ出力
CotEditorのログウィンドウに指定の文字をログ出力するAppleScriptです。
AppleScript名:CotEditorのコンソールにログ出力 |
tell application "CotEditor" activate write to console "ぴよまるさんだよ" end tell |
CotEditor 3.2.8のじっけん〜Selection
AppleScript名:CotEditor 3.2.8のじっけん〜Selection |
tell application "CotEditor" tell document 1 set aSel to properties of selection end tell end tell –> (* {range:{51, 25}, class:text selection, line range:{4, 1}, contents:"cessibility Inspectorの使い方"} *) |
CotEditor 3.2.8のじっけん
AppleScript名:CotEditor 3.2.8のじっけん |
tell application "CotEditor" properties —> {frontmost:false, class:application, name:"CotEditor", version:"3.2.8"} set a to count every window –> 1 tell front document properties (* {selection:sleep "" of document "名称未設定", path:missing value, text:"Book1 URLs http://piyocast.com/as/archives/2599 Accessibility Inspectorの使い方 ", encoding:"Unicode(UTF-8)", wrap lines:true, class:document, length:77, file:missing value, modified:true, coloring style:"Plain Text", line ending:LF, tab width:4, contents:"Book1 URLs http://piyocast.com/as/archives/2599 Accessibility Inspectorの使い方 ", IANA charset:"utf-8", name:"名称未設定", expands tab:false} *) end tell tell window 1 properties –> {zoomable:true, closeable:true, zoomed:false, class:window, index:1, visible:true, name:"名称未設定", view opacity:0.895218579235, miniaturizable:true, id:19863, miniaturized:false, resizable:true, bounds:{45, 70, 645, 768}, document:document "名称未設定"} end tell end tell |
CotEditor 3でHooking Script
AppleScript名:CotEditor 3でHooking Script |
use AppleScript version "2.4" use scripting additions –use framework "Foundation" using terms from application "CotEditor" on document opened theDocument tell application "CotEditor" set thePath to file of theDocument display notification "Opened " & thePath end tell end document opened on document saved theDocument tell application "CotEditor" set thePath to file of theDocument display notification "Saved " & thePath end tell end document saved end using terms from |
CotEditorで文字を取得する
AppleScript名:CotEditorで文字を取得する |
tell application "CotEditor" tell document 1 set aList to every character of contents end tell end tell –> (* {"て", "す", "と", "だ", "よ", " ", "日", "本", "語", "を", "打", "つ", "テ", "ス", "ト", "。"} *) |
CotEditorでdocumentのparagraphを取得する
AppleScript名:CotEditorでdocumentのparagraphを取得する |
tell application "CotEditor" tell document 1 set aList to every paragraph of contents end tell end tell –> (* {"てすとだよ ", "日本語を打つテスト。"} *) |
CotEditorでdocumentのプロパティを取得する
AppleScript名:CotEditorでdocumentのプロパティを取得する |
tell application "CotEditor" tell document 1 properties end tell end tell –> (* {selection:sleep "" of document "book1&2でAS Holeに対して張られていたリンク.txt" of application "CotEditor", path:"/Users/maro/Desktop/book1&2でAS Holeに対して張られていたリンク.txt", text:"Book1 URLs ", encoding:"Unicode(UTF-8)", wrap lines:true, class:document, length:2123, file:file "Cherry:Users:maro:Desktop:book1&2でAS Holeに対して張られていたリンク.txt", modified:false, coloring style:"Plain Text", line ending:LF, tab width:4, contents:"Book1 URLs ", IANA charset:"utf-8", name:"book1&2でAS Holeに対して張られていたリンク.txt", expands tab:false} *) |
CotEditorでウィンドウの透明度を連続的に変更する
AppleScript名:CotEditorでウィンドウの透明度を連続的に変更する |
tell application "CotEditor" tell window 1 repeat with i from 10 to 1 by -1 set view opacity to (i / 10) delay 0.1 end repeat set view opacity to 1.0 end tell end tell |
CotEditorでdocumentのselectionを取得
AppleScript名:CotEditorでdocumentのselectionを取得 |
tell application "CotEditor" tell document 1 set aSel to properties of selection –> {range:{78, 36}, class:text selection, line range:{6, 1}, contents:"http://piyocast.com/as/archives/3526"} set aCon to contents of selection –> "cessibility Inspectorの使い方" end tell end tell |
CotEditorでWindowの枚数をカウント
CotEditorのウィンドウの枚数をカウントするAppleScriptです。ただし、visibleがfalseのウィンドウをカウントしてしまう場合もあるので、visibleがtrueのもののみをカウントするようにしたほうがよいでしょう。
また、最前面のドキュメントを指定したい場合には、Window 1が所属しているdocumentを探すよりは、front documentでアクセスしたほうが簡単で確実です。
AppleScript名:CotEditorでWindowの枚数をカウント |
tell application "CotEditor" set a to count every window end tell –> 1 |