Applescript检查App Store

时间:2015-05-07 06:37:48

标签: macos applescript osx-yosemite

感谢您抽出宝贵时间阅读我的问题。

这很简单,但我对此完全不屑一顾,所以我遇到了一些麻烦。

是否可以使用一个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»

感谢任何帮助。

1 个答案:

答案 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"

notification

menu bar items随处可访问(例如,窗口/数字桌面模式,全屏模式,停靠/禁用停靠)。

确保为脚本编辑器启用了辅助功能,或者用于调用脚本的任何应用,以获得对用户界面的访问权。

只有一个奇怪的事情:如果我使用begins with "App Store..."而不是begins with "App Store",代码将是一个哑巴。我不知道为什么 - 它可能与转义字符和...有关。任何知道的人都请发表评论。

至于你的代码,我可以从 AppleScript字典告诉Updates不是App Store.app的属性。用户界面中也没有任何其他类别。要进入词典,请打开脚本编辑器并按CMD + SHIFT + O

此外,如果您想使用return语句,则需要显式处理程序。换句话说,您需要将代码包装在on runend run之间。