« UNIXコマンドの実行 | トップページ | rectangle 矩形指定でスクリーンキャプチャーを取得する »

[com.apple.finder] SlicesRootAttributes その2

 

【スクリプトエディタで開く】|

#!/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

property refMe : a reference to current application
set appFileManager to refMe's NSFileManager's defaultManager()


##########################################
###【1】ドキュメントのパスをNSString
set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSLibraryDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidLibraryDirPathURL to ocidURLsArray's firstObject()
##テスト用
##set ocidPlistFilePathURL to ocidLibraryDirPathURL's URLByAppendingPathComponent:("Preferences/com.apple.finder.test.plist")
set ocidPlistFilePathURL to ocidLibraryDirPathURL's URLByAppendingPathComponent:("Preferences/com.apple.finder.plist")
##########################################
### 【2】PLISTを可変レコードとして読み込み
set ocidPlistDict to refMe's NSMutableDictionary's alloc()'s initWithContentsOfURL:(ocidPlistFilePathURL)

##########################################
### 【3】処理はここで
set ocidSlicesRootArray to (ocidPlistDict's objectForKey:("SlicesRootAttributes"))
if ocidSlicesRootArray = (missing value) then
log "未設定なので設定します"
  set listkMDitem 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
  set ocidSlicesRootArray to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
ocidSlicesRootArray's setArray:(listkMDitem)
ocidPlistDict's setObject:(ocidSlicesRootArray) forKey:("SlicesRootAttributes")
else
  ###項目の有無確認 ラベル追加
  set strTBID to ("kMDItemFSLabel") as text
  set boolValue to ocidSlicesRootArray's containsObject:(strTBID)
  if boolValue = false then
log "未設定なので設定します"
    set ocidSetValue to refMe's NSString's stringWithString:(strTBID)
ocidSlicesRootArray's addObject:(ocidSetValue)
  else
log "すでに設定済み"
  end if
end if
###項目の有無確認 タグ追加
set strTBID to ("kMDItemUserTags") as text
set boolValue to ocidSlicesRootArray's containsObject:(strTBID)
if boolValue = false then
log "未設定なので設定します"
  set ocidSetValue to refMe's NSString's stringWithString:(strTBID)
ocidSlicesRootArray's addObject:(ocidSetValue)
else
log "すでに設定済み"
end if
##########################################
####【4】保存 ここは上書き
set boolDone to ocidPlistDict's writeToURL:(ocidPlistFilePathURL) atomically:true
-->システムファイルなの書き込めないので書き込み失敗でfalseが返る
log boolDone


##########################################
####【5】リロード

if boolDone = true then
  tell application "Finder" to quit
  repeat 1 times
delay 1
    #####CFPreferencesを再起動
    set strCommandText to "/usr/bin/killall cfprefsd" as text
do shell script strCommandText
delay 1
  end repeat
  
  tell application "Finder" to activate
return "正常終了"
else
return "保存に失敗しました"
end if



return "処理終了"

|

« UNIXコマンドの実行 | トップページ | rectangle 矩形指定でスクリーンキャプチャーを取得する »

AppleScript Finder」カテゴリの記事

AppleScript XML Plist」カテゴリの記事

AppleScript Spotlight」カテゴリの記事