« [NSFileManager] NSItemReplacementDirectory と Path to | トップページ | [Script Editor]Acrobatの終了(Script Editorの自動補完の回避) »

[Plist]Plistに値を書き込み保存する

defaultsコマンドを利用する
https://quicktimer.cocolog-nifty.com/icefloe/2022/05/post-a415d7.html
の設定を
AppleScriptのみで設定する例


#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
#
#
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
##自分環境がos12なので2.8にしているだけです
use AppleScript version "2.8"
use framework "Foundation"
use scripting additions

######ログ表示
doLogView()

property objMe : a reference to current application

property objNSString : a reference to objMe's NSString
property objNSMutableString : a reference to objMe's NSMutableString

property objNSArray : a reference to objMe's NSArray
property objNSMutableArray : a reference to objMe's NSMutableArray

property objNSDictionary : a reference to objMe's NSDictionary
property objNSMutableDictionary : a reference to objMe's NSMutableDictionary

property objNSURL : a reference to objMe's NSURL

###SlicesRootAttributesに設定する項目
set listAttributes to {"kMDItemKind", "kMDItemLastUsedDate", "kMDItemContentModificationDate", "kMDItemContentCreationDate", "kMDItemDisplayName", "kMDItemTextContent", "com_apple_FileExtensionAttribute", "kMDItemFSInvisible", "kMDItemBitsPerSample", "kMDItemFSName", "kMDItemFSSize", "kMDItemPixelCount", "kMDItemOrientation", "kMDItemDurationSeconds", "kMDItemPixelWidth", "kMDItemPixelHeight", "kMDItemFSLabel", "kMDItemMediaTypes", "kMDItemColorSpace", "kMDItemFonts", "kMDItemPageWidth", "kMDItemFSContentChangeDate", "kMDItemFSCreationDate", "kMDItemEmailAddresses", "kMDItemPageHeight", "kMDItemFSNodeCount", "kMDItemLayerNames"} as list
#####NSArray
set ocidNSArrayAttributes to objNSArray's arrayWithArray:listAttributes


####ファイル名指定
set strFileName to "com.apple.finder.plist"

####ユーザー初期設定フォルダ
set aliasUserPreferences to path to preferences folder from user domain as alias
####ファイルパス(エリアス)
tell application "Finder"
set aliasFinderPreferencesPath to file strFileName of folder aliasUserPreferences as alias
end tell
####ファイルパスUNIXパス
set strFinderPreferencesPath to POSIX path of aliasFinderPreferencesPath as text
####パスのテキストをNSString
set ocidFilePath to objNSString's stringWithString:strFinderPreferencesPath
####NSURL
set ocidFilePathUrl to objNSURL's fileURLWithPath:ocidFilePath isDirectory:false
####可変ディクショナリ初期化
set ocidPlistData to (objNSMutableDictionary's new())
####ファイルの内容をディレクトリ=レコードに
set ocidPlistData to objNSMutableDictionary's dictionaryWithContentsOfFile:ocidFilePath
####SlicesRootAttributesが無い場合対応
try
####SlicesRootAttributes
set ocidAttributes to ocidPlistData's SlicesRootAttributes
on error
ocidPlistData's setObject:ocidNSArrayAttributes forKey:"SlicesRootAttributes"
####SlicesRootAttributes
set ocidAttributes to ocidPlistData's SlicesRootAttributes
end try
####リストの数を数える
set numCntAttributes to count (ocidAttributes)
####リストの番目の初期化 逆順
set numCntArray to numCntAttributes - 1 as number
##############################
####リストの数だけ繰返し
repeat numCntAttributes times
####X番目を取り出して
set objAttributes to ocidAttributes's objectAtIndex:numCntArray
###比較リストに含まれているか?
set boolContain to (ocidNSArrayAttributes's containsObject:objAttributes)
####比較結果
if boolContain is true then
###項目あるので何もしない
else if boolContain is false then
###項目が無いので削除する
(ocidAttributes's removeObjectAtIndex:numCntArray)
end if
set numCntArray to numCntArray - 1 as number
end repeat
##############################
##追加分
repeat with objNSArrayAttributes in ocidNSArrayAttributes
###比較リストに含まれているか?
set boolContain to (ocidAttributes's containsObject:objNSArrayAttributes)
####比較結果
if boolContain is true then
###項目あるので何もしない
else if boolContain is false then
###項目が無いので追加する
(ocidAttributes's addObject:objNSArrayAttributes)
end if
end repeat

######################
###保存方式
###バイナリー形式
set ocidNSbplist to objMe's NSPropertyListBinaryFormat_v1_0
###XML形式
set ocidNSxmlplist to objMe's NSPropertyListXMLFormat_v1_0
####書き込み用にバイナリーデータに変換
set ocidPlistEditData to objMe's NSPropertyListSerialization's dataWithPropertyList:ocidPlistData format:ocidNSbplist options:0 |error|:(missing value)
####書き込み
ocidPlistEditData's writeToFile:ocidFilePath atomically:true

#########################ログ表示
to doLogView()

tell application "System Events"
set listAppList to title of (every process where background only is false)
end tell
repeat with objAppList in listAppList
set strAppList to objAppList as text
if strAppList is "スクリプトエディタ" then
tell application "Script Editor"
if frontmost is true then
try
tell application "System Events" to click menu item "ログを表示" of menu "表示" of menu bar item "表示" of menu bar 1 of application process "Script Editor"
end try
end if
end tell
end if
end repeat

end doLogView
#########################

|

« [NSFileManager] NSItemReplacementDirectory と Path to | トップページ | [Script Editor]Acrobatの終了(Script Editorの自動補完の回避) »

AppleScript Finder」カテゴリの記事

AppleScript XML Plist」カテゴリの記事

AppleScript Spotlight」カテゴリの記事