标签: applescript

调用子例程的应用程序范围问题

我有一个简短的子程序如下:

\n\n
on show_Dialog(msg)\n  tell application "Script Debugger Demo"\n    display dialog msg\n  end tell\nend show_Dialog\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果我从没有告诉语句拥有它的脚本中调用它,例如:

\n\n
show_Dialog("well this works")\n
Run Code Online (Sandbox Code Playgroud)\n\n

没有问题。如果我从调用另一个应用程序的代码块中调用它,我会收到一个(未指定的)错误(-1708),例如:

\n\n
tell application Mail\n  show_Dialog("this will not work for sure")\nend tell\n
Run Code Online (Sandbox Code Playgroud)\n\n

然而,在脚本块中,我可以将告诉应用程序“Excel”命令放入告诉应用程序“邮件”代码块中。

\n\n

如何拥有一个始终在特定应用程序中生成对话框的通用对话框子例程?问题是我将我的应用程序分配到不同的空间,当它跳离脚本调试器时会很痛苦。有许多(OS X Spaces 和/或脚本调试器)解决方法,但我想知道为什么此代码失败以及如何正确执行它。

\n\n

编辑->即使当我从子例程中删除“tell application\xe2\x80\xa6\”和“endtell\”行时,我也会收到错误。

\n

applescript

1
推荐指数
1
解决办法
346
查看次数

applescript 单击菜单栏选项

我想创建一个 AppleScript 来单击菜单,但我无法使用我使用的脚本,这是我想要的菜单:

ELEMENT :
 Role : menu item
 Title: "sign in As..."
 Description :
 Help:
 Application: SytemUIServer

ELEMENT PATCH (starting at leaf element):
 menu Item "Sign in As..." (menu item 12)
  menu (menu 1)
   menu extra (menu bar item 2)
    menu bar (menu bar 1)
      application "SystemUIServer"
Run Code Online (Sandbox Code Playgroud)

所以我做了几个脚本,最后一个是

ignoring application responses
    tell application "System Events" to tell process "SystemUIServer"
        click menu bar item 2 of menu bar 1
    end tell
end ignoring
do shell script "killall System\\ Events"
delay …
Run Code Online (Sandbox Code Playgroud)

select applescript menubar

1
推荐指数
1
解决办法
4427
查看次数

检查应用程序是否在 AppleScript 中运行的更快方法

我正在一个应该响应的程序中使用AppleScript,但似乎我在检查应用程序是否正在运行时遇到了瓶颈,这需要大约半秒\xe2\x80\xa6有没有办法减少这?

\n\n

这是我目前正在做的事情:

\n\n
if application "Finder" is running then\n    tell application "Finder" to activate\nend if\n
Run Code Online (Sandbox Code Playgroud)\n

applescript

1
推荐指数
1
解决办法
3807
查看次数

AppleScript:一天后递增和重置

我有一个 AppleScript 保存为应用程序,我每天运行它几次,并且我想添加一个计数器。

property currentCount : 0
increment()

on increment()
    set currentCount to currentCount + 1
    display dialog "Count is now " & currentCount & "."
end increment
Run Code Online (Sandbox Code Playgroud)

即使我关闭并再次打开它,每次脚本运行时都会添加 1,但如何重置它?

我的意思是,目标是每天计算“病例”的数量,然后在第二天重新开始。

怎样才能第二天自动重置?

干杯

applescript increment count counting

1
推荐指数
1
解决办法
3277
查看次数

读取大量对象花费的时间太长

我\xe2\x80\x99m 尝试在 JXA 中编写一批 OmniFocus 任务脚本,但遇到了一些严重的速度问题。我不认为这个问题是 OmniFocus 或 JXA 特有的;相反,我认为这是对获取对象如何工作的更普遍的误解 - 我希望它像单个 SQL 查询一样工作,加载内存中的所有对象,但它似乎按需执行每个操作。

\n\n

这里\xe2\x80\x99s是一个简单的例子 - 让\xe2\x80\x99s获取所有未完成任务的名称(这些任务存储在后端的SQLite DB中):

\n\n
var tasks = Application('OmniFocus').defaultDocument.flattenedTasks.whose({completed: false})\nvar totalTasks = tasks.length\nfor (var i = 0; i < totalTasks; i++) {\n    tasks[i].name()\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

[Finished in 46.68s]

\n\n

实际上获取 900 个任务的列表大约需要 7 秒——已经很慢了——但是循环和读取基本属性又需要 40 秒,大概是因为每个任务都会访问数据库。(此外,它tasks的行为不像数组 - 它似乎在每次访问时都会重新计算。)

\n\n

有什么方法可以快速做到这一点 - 一次将一批对象及其所有属性读入内存?

\n

applescript javascript-automation

1
推荐指数
1
解决办法
430
查看次数

如何使用默认 shell 查找 OSX 上的所有可用字体

我正在尝试使用extendscript(一种专有的ECMAScript方言,但主要是\xe2\x89\x88 javascript)为Adobe After Effects编写脚本。我可以使用内置命令 system.callSystem()来使用默认(?) shell 执行命令,但我找不到 bash oneliner,或者我可以用来列出可用字体的 AppleScript 命令。

\n\n

有没有办法在 OSX 命令行上获取所有字体?

\n

macos bash fonts applescript extendscript

1
推荐指数
1
解决办法
3432
查看次数

无法使用 Applescript 调整窗口大小

我使用脚本编辑器编辑了以下 Applescript,尝试调整 RStudio 窗口的大小,但没有成功。RStudio 已加载,但未正确调整大小。下面附有代码和错误消息。有任何想法吗?我使用的是 macOS Big Sur 11.0.1 和 RStudio 1.3.1073。谢谢!

tell application "RStudio"
    activate
    set the bounds of the first window to {140, 0, 1160, 775}
end tell
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

applescript window-resize rstudio

1
推荐指数
1
解决办法
1088
查看次数

osascript如何传入变量

我有以下内容,不起作用。它在终端中打开一个新选项卡,但变量 $DomainName 未传入?

DomainName="example.com"
osascript -e 'tell application "Terminal" to do script "watch dig +short NS $DomainName"'
Run Code Online (Sandbox Code Playgroud)

结果是:

watch dig +short NS $DomainName
Run Code Online (Sandbox Code Playgroud)

如何传入变量?

bash applescript

1
推荐指数
1
解决办法
3239
查看次数

无法使用 applescript 将麦克风静音和取消静音

我正在编写一个在 macOS 上打开/关闭麦克风的脚本

if input volume of (get volume settings) is 0 then
    if storedInputLevel exists then
        set volume input volume storedInputLevel
        log "unmute it"
    end if
else
    tell application "System Events"
        -- save the current input volume setting --
        set storedInputLevel to input volume of (get volume settings)
    end tell
    set volume input volume 0
    log "mute it"
end if

Run Code Online (Sandbox Code Playgroud)

上述脚本仅在麦克风音量的初始状态 > 0 时有效,否则会抛出错误“storedInputLevel”不存在。

storedInputLevel 的目的是分配用户用来配置的麦克风音量。我的目标是打开/关闭麦克风音量。

任何帮助表示赞赏

macos applescript automator swift

1
推荐指数
1
解决办法
737
查看次数

将applescript整合到可可中

我做了一个简短的应用程序,发送带有附件的电子邮件.现在我想在我的cocoa应用程序中集成这个脚本.我尝试了以下在互联网上找到的代码:

NSAppleScript *mailScript;
NSString *scriptString= [NSString stringWithFormat:@"the applescript"];
mailScript = [[NSAppleScript alloc] initWithSource:scriptString];
[mailScript executeAndReturnError:nil];
[mailScript release];
Run Code Online (Sandbox Code Playgroud)

但是,此代码不起作用.我是可可的完全新手,可以使用一些帮助.

更新:电子邮件已创建.虽然添加了附件,但AppleScript似乎停止了.当在脚本编辑器中运行时,applescript工作正常.任何线索?

谢谢

cocoa applescript integrate

0
推荐指数
1
解决办法
2206
查看次数