AppleScript应用程序的全局首选项

时间:2011-05-05 18:03:53

标签: applescript

是否可以在AppleScript中为应用创建保存某种设置?

应该在脚本的开头加载设置,并将其保存在脚本的末尾。

示例:

if loadSetting("timesRun") then
    set timesRun to loadSetting("timesRun")
else
    set timesRun to 0
end if
set timesRun to timesRun + 1
display dialog timesRun
saveSetting("timesRun", timesRun)

第一次运行脚本时对话框显示1,第二次显示2 ...

函数loadSetting和saveSetting将是我需要的函数。

3 个答案:

答案 0 :(得分:4)

脚本properties是持久的,但是每当您重新保存脚本时,保存的值都会被脚本中指定的值覆盖。运行:

property |count| : 0
display alert "Count is " & |count|
set |count| to |count| + 1

几次,重新保存,然后再运行一次。

如果要使用用户默认系统,可以使用do shell script "defaults ..."命令或(如果使用Applescript Studio)default entry "propertyName" of user defaults。在Applescript Studio中,您bind values to user defaults

答案 1 :(得分:3)

这也很有效(查看提示的第一条评论):

http://hints.macworld.com/article.php?story=20050402194557539

它使用“默认”系统,您可以在〜/ Library / Preferences

中获得您的偏好

答案 2 :(得分:3)

Applescript支持通过系统事件本地读取和编写plist:

use application "System Events" # Avoids tell blocks, note: 10.9 only

property _myPlist : "~/Library/Preferences/com.plistname.plist

set plistItemValue to get value of property list item "plistItem" of contents of property list file _myPlist
set plistItemValue to plistItemValue + 1

set value of property list item "plistItem" of contents of property list file _myPlist to plistItemValue

唯一的问题是它无法创建plist,因此如果plist的存在不确定,则需要将其包装在 try 上。

try 
    set plistItemValue to get value of property list item "plistItem" of contents of property list file _myPlist
on error -1728 # file not found error
    do shell script "defaults write com.plistname.plist plistItem 0"
    set plistItemValue to get value of property list item "plistItem" of contents of property list file _myPlist
end try