date pickerで日付選択ダイアログを表示するAppleScript Library「choose date Lib」です。
–> Download choose date Lib.scptd (To ~/Library/Script Libraries/)
date pickerで日付選択するScriptは割とありふれていて、難易度も低く、あえてライブラリ化する必要をそれほど感じていなかったのですが、たまに(このような部品として)使いたくなります。ライブラリ化することで、ブラックボックス化されるため大きなプログラムに突っ込んだときのシステム負荷が少ない(Script Debugger上で巨大なプログラムを編集していると応答速度が遅くなってくるので、こういうUI部品系のコードまで構文確認の対象にしたくない)、ということは確実にいえます。
外部フレームワークなしで呼び出せる部品を整備しておくとメリットが大きいため、技術的には何も見るべきものはありませんが、用意しておきました。
デフォルトの表示日時を指定できるあたりが自分的に必要な機能であり、さほどたいしたものでもありません。CotEditorのPowerPack作成時に、
「アプリケーション内蔵のスクリプトメニューから呼び出したときにウィンドウ(ダイアログ)の表示レベルがメインのアプリケーションよりも低くなる(背面に回される)」
という現象を経験していたので(CotEditor側がosascriptコマンドでScriptを呼び出していることが原因?)、Window levelについては強制的に操作しています。
本当はこれを2つ横に並べて、開始日と終了日を取得するライブラリを作りたいのですが、NSDatePickerが意外と難物で、予想外に時間がかかって放り投げてしまいました。
本ライブラリは、こんな感じ(↓)の用途に使っています。
–> Download Code-Signed AppleScript executable Applet with Library in its bundle
AppleScript名:cre & mod date modifier.scptd |
— – Created by: Takaaki Naganoya – Created on: 2019/10/19 — – Copyright © 2019 Piyomaru Software, All Rights Reserved — use AppleScript version "2.4" use framework "Foundation" use scripting additions use cDate : script "choose date Lib" set aFile to choose file tell application "Finder window" set aDate to creation date of aFile end tell set dRes1 to choose date main message "ファイルの作成&修正日変更" sub message "変更したい日付を選択してください。" default date aDate copy dRes1 to {yNum, mNum, dNum} set targDate to date ((yNum as string) & "/" & (mNum as string) & "/" & (dNum as string)) changeFileCreationDate(targDate, aFile) of me changeFileModDate(targDate, aFile) of me –指定パスのファイルの作成日時を変更する on changeFileCreationDate(aDate, aFile) set aDic to current application’s NSMutableDictionary’s dictionaryWithObject:aDate forKey:(current application’s NSFileCreationDate) set aFM to current application’s NSFileManager’s defaultManager()’s setAttributes:aDic ofItemAtPath:(POSIX path of aFile) |error|:(missing value) end changeFileCreationDate –指定パスのファイルの修正日時を変更する on changeFileModDate(aDate, aFile) set aDic to current application’s NSMutableDictionary’s dictionaryWithObject:aDate forKey:(current application’s NSFileModificationDate) set aFM to current application’s NSFileManager’s defaultManager()’s setAttributes:aDic ofItemAtPath:(POSIX path of aFile) |error|:(missing value) end changeFileModDate |