感谢您抽出宝贵时间阅读我的问题。
这很简单,但我对此完全不屑一顾,所以我遇到了一些麻烦。
是否可以使用一个AppleScript来检查mac app store的更新,如果有,则输出更新的数量到某个地方?
一个很好的例子是(如果你知道的话)检查未读邮件的geeklet,然后将它输出到桌面。
编辑:
我为未读邮件下载了一个geeklet(如上所述),并以此作为起点,我尝试编写自己的脚本。
set run_bool to 1
tell application "System Events"
set run_bool to count (every process whose name is "App Store")
end tell
if run_bool is 1 then
tell application "App Store"
set update_count to 0
set output_string to ""
repeat with upd in Apps in Updates
if upd's download is not true then
set update_count to update_count + 1
end if
end repeat
if update_count is 0 then
set output_string to "zero"
else if update_count is 1 then
set output_string to "one"
else
set output_string to "two"
end if
end tell
else
set output_string to "not running"
end if
return output_string
现在这不是我的最终代码,只是检查它是否有效以及输出是什么。
编译时我收到错误
错误“未定义变量更新。”数字-2753来自“更新”
以及
语法错误
预计行结束但发现未知令牌
另外,当我停止编译时,它出现在我的代码
的最后一行下面告诉应用程序“GeekTool Helper”
激活
«事件ascrgsdf»
感谢任何帮助。
答案 0 :(得分:0)
@foo对他的想法非常正确。此代码只需要一行。在第二行中,我使用了display notification
,但您用您首选的方法替换它来传递值。
tell application "System Events" to tell (first application process whose ¬
frontmost is true) to set returnValue to title of ((first menu item whose title ¬
begins with "App Store") of menu "Apple" of menu bar 1)
display notification returnValue
结果:
"App Store…, 1 update"
menu bar items
随处可访问(例如,窗口/数字桌面模式,全屏模式,停靠/禁用停靠)。
确保为脚本编辑器启用了辅助功能,或者用于调用脚本的任何应用,以获得对用户界面的访问权。
只有一个奇怪的事情:如果我使用begins with "App Store..."
而不是begins with "App Store"
,代码将是一个哑巴。我不知道为什么 - 它可能与转义字符和...
有关。任何知道的人都请发表评论。
至于你的代码,我可以从 AppleScript字典告诉Updates
不是App Store.app
的属性。用户界面中也没有任何其他类别。要进入词典,请打开脚本编辑器并按CMD + SHIFT + O
此外,如果您想使用return
语句,则需要显式处理程序。换句话说,您需要将代码包装在on run
和end run
之间。