Safariのブックマーク内容からURLとページタイトルを取得してテキスト書き出しするAppleScriptです。
一番のみどころは、Predicate文でURLStringがnilでなければ、という記述を行っている箇所です。AppleScriptのデータに変換するとnilはmissing valueになるので、ここでmissing valueを指定したくなるところですが、nilを指定しました。
実行のためには、AppleScriptの実行プログラム(スクリプトエディタとかScript Debugger)を「システム環境設定」の「セキュリティとプライバシー」>「プライバシー」>「フルディスクアクセス」に登録しておく必要があります。AppleScriptアプレットから実行する場合には、そのAppleScriptアプレットそのものを「フルディスクアクセス」に登録する必要があります。
AppleScript名:Read Safari Bookmark v2 |
— Created 2016-02-27 by Takaaki Naganoya — Piyomaru Software 2016 use AppleScript version "2.4" use scripting additions use framework "Foundation" script spdBk property outList : {} end script set (outList of spdBk) to {} set libPath to (POSIX path of (path to library folder from user domain)) & "Safari/Bookmarks.plist" set aRec to retDictFromPlist(libPath) of me set aList to aRec’s Children set aPredicate to current application’s NSPredicate’s predicateWithFormat:"URLString != nil" set filteredArray to (aList’s filteredArrayUsingPredicate:aPredicate) as list repeat with i in filteredArray set the end of (outList of spdBk) to "■" & (Title of URIDictionary of i) & return & (URLString of i) end repeat set aRes to listToStringUsingTextItemDelimiter(contents of (outList of spdBk), return & return) of me –Read plist as record on retDictFromPlist(aPath as text) set thePath to current application’s NSString’s stringWithString:aPath set thePath to thePath’s stringByExpandingTildeInPath() set theDict to current application’s NSDictionary’s dictionaryWithContentsOfFile:thePath return theDict end retDictFromPlist on listToStringUsingTextItemDelimiter(sourceList, textItemDelimiter) set anArray to current application’s NSArray’s arrayWithArray:sourceList set aString to anArray’s componentsJoinedByString:textItemDelimiter return (aString as string) end listToStringUsingTextItemDelimiter |
More from my site
(Visited 59 times, 1 visits today)