MacJournalで選択中のjournal entryの文中(plain text content)からData Detector(NSDataDetector)で日付を取得し、初出の日付をjournal entryの作成日付に設定するAppleScriptです。
macOSの不具合情報をMacJournalにスクラップして整理していたところ、記事作成日をjournal entryの作成日付に反映させたいと考え、以前に作ってあったScriptを修正し、Data Detectorで日付情報を抽出するようにしてみました。
なお、複数のjournal entryを選択した状態で実行すると、ループですべての選択中のjournal entryを処理します。
macOS標準搭載のScript Menuに入れて使用しています。
AppleScript名:MacJournalで選択中のエントリの文中からdata detectorで日付を取得して作成日付に反映 |
— Created 2019-01-08 by Takaaki Naganoya — 2019 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" property NSString : a reference to current application’s NSString property NSDataDetector : a reference to current application’s NSDataDetector tell application "MacJournal" set aSel to selected entries repeat with i in aSel set j to contents of i set aName to name of j set aDate to date of j set aStr to plain text content of j set aDateList to getDatesIn(aStr) of me if aStr is not equal to "" and aDateList is not equal to {} then set targDate to contents of (first item of aDateList) try set date of j to targDate end try end if end repeat end tell on getDatesIn(aString) set anNSString to NSString’s stringWithString:aString set {theDetector, theError} to NSDataDetector’s dataDetectorWithTypes:(current application’s NSTextCheckingTypeDate) |error|:(reference) set theMatches to theDetector’s matchesInString:anNSString options:0 range:{0, anNSString’s |length|()} set theResults to theMatches’s valueForKey:"date" return theResults as list end getDatesIn |