我正在尝试编写一个脚本,将当前+所有下一个选项卡拆分到一个新窗口 \xe2\x80\x94 中,这对于组织非常有用。
\n\n完全有可能获取当前和所有下一个选项卡的 URL,创建一个新窗口并在新选项卡中加载所有这些 URL,然后关闭原始窗口 \xe2\x80\x93 中的选项卡,但这看起来非常麻烦,慢的。
\n\n那么,有没有什么方法可以将一组 Safari 选项卡移动到新窗口,而无需实际重新加载 URL?
\n我想编写一些AppleScript,它会迭代应用程序的(非最小化)窗口,并为每个应用程序将其带到前面并触发另一个应用程序BTT(将移动窗口)中的某些内容。目的是将应用程序的所有窗口移动到同一位置。移动部分已处理(由 BTT),我只需要帮助使这种情况发生在应用程序的所有窗口上。
(这个问题涉及BetterTouchTool,但它并不是真正的问题 - 我认为 - 我怀疑你不需要了解任何有关 BTT 的知识来回答......)
我正在尝试编写一个 AppleScript 脚本(当我将其简化为最简单的版本时)激活一些应用程序,并循环遍历其所有窗口,为每个窗口触发 BetterTouchTool“命名触发器”。指定触发器的工作是将当前窗口移动到某个位置,但其细节并不重要。
我觉得这应该很简单,但我似乎无法找到正确的方法。我已经尝试过对它进行货物崇拜,但我没有取得任何进展(除了怀疑我需要涉及“系统事件”)......我是一名经验丰富的程序员,但我从未深入研究过 AppleScript 和发现它做事的方式相当奇怪/令人困惑。
到目前为止,我正在工作的是一个不会在窗口上循环的版本,因此它只会点击“第一个”(在某种意义上的“第一个”,这似乎是“该应用程序最近活跃的”) )。
例如,以下作品。(我已将其硬编码到 VSCode,尽管在我尝试编写的完整内容中,它会迭代应用程序名称列表以及为它们运行的触发器。)
on run
if application "Visual Studio Code" is running then
tell application "Visual Studio Code" to activate
tell application "BetterTouchTool"
trigger_named "Move window: monitor 4k: core"
end tell
end if
end run
Run Code Online (Sandbox Code Playgroud)
这样就会激活 VSCode,然后告诉 BTT 运行命名触发器以将当前窗口移动到屏幕上的某个位置。效果是最近使用的 VSCode 窗口被移动。
好的,这是一个不错的开始,但我想对所有VSCode 窗口(或者理想情况下,当前可见桌面上的所有非最小化窗口)执行此操作。
BTT 的 AppleScript 界面似乎不支持针对特定窗口 - 它只适用于任何活动的应用程序/窗口,因此我需要以某种方式激活/将窗口置于前面(?),然后调用 BTT 触发器。
我想我需要这样的东西(暂时忽略忽略最小化窗口的问题): …
我对基本的SwiftUI有了更多的了解,但现在我想扩展我的应用程序,为我实际做一些有关系统组件的事情。基本上,我想从我的应用程序内部运行AppleScript,在 Mac Mail 中创建签名。脚本本身非常简单:
// Generates a signature in Mac Mail
tell application "Mail"
set newSig to make new signature with properties {name:"The Signature Name"}
set content of newSig to "My New Signature Content"
end tell
Run Code Online (Sandbox Code Playgroud)
我创建了一个带有按钮的视图,该按钮应该执行脚本:
import SwiftUI
struct SomeView: View {
@State var status = ""
var body: some View {
VStack(alignment: .center) {
Button(action: {
let source = """
tell application \"Mail\"
set newSig to make new signature with properties {name: \"The …Run Code Online (Sandbox Code Playgroud) 我以 doc 格式存储了许多文件,这些文件只能在我的 mac 上使用 libreoffice 打开。
命令:
./soffice --headless --convert-to docx --outdir /home/user ~/Downloads/*.doc
Run Code Online (Sandbox Code Playgroud)
完全做了它应该做的事情:它将所有*.doc文件转换为 libreoffice*.docx文件。
我的问题是我有包含这些文件的文件夹和子文件夹。
有没有办法从起始目录搜索所有文件夹,并让“soffice”在每个文件夹中完成其工作,将新版本 ( ) 存储在找到*.docx原始版本 ( ) 的位置。*.doc
不幸的是,我不太熟悉苹果脚本或终端来完成这项工作。然而,数百个文件夹中有 8000 个 doc 文件需要更新为 docx。
感谢您的帮助。
我在 Automator 中设置了 Applescript 快速操作来离开 Zoom 会议。无论最前面是什么应用程序,我都想检查 Zoom 是否正在运行,如果是,则离开会议。
set appName to "Zoom.us"
if application appName is running then
tell application id (id of application appName)
activate
end tell
tell application "System Events"
keystroke "w" using command down
keystroke tab
keystroke return
end tell
end if
Run Code Online (Sandbox Code Playgroud)
有用!问题是,如果我正在参加 Zoom 会议,并且另一个应用程序位于最前面,我必须获得该应用程序的系统首选项的许可才能访问系统首选项。就像我在 Chrome 中一样,我必须允许 Chrome 发送击键。然后,Chrome 将始终有效。
我必须对每个可能的应用程序执行此操作。有没有一种方法可以在不通过大苏尔的安全措施的情况下进行按键操作?我不介意将变焦调到最前面。
当用户按下全局快捷方式时,我试图获取选定的文本。无论当前聚焦的应用程序是 chrome、safari 还是 Microsoft Word,我的应用程序都应该读取当前选择的文本。
我正在尝试使用 AppleScript 来执行此操作,该脚本使用剪贴板进行黑客攻击。但这并不适用于所有应用程序。
func readSelectedText() {
let script = """
-- Back up clipboard contents:
set savedClipboard to the clipboard
-- Copy selected text to clipboard:
tell application "System Events" to keystroke "c" using {command down}
delay 1 -- Without this, the clipboard may have stale data.
set theSelectedText to the clipboard
delay 1 -- Without this delay, may restore clipboard before pasting.
-- Restore clipboard:
set the clipboard to savedClipboard
return theSelectedText
"""
var …Run Code Online (Sandbox Code Playgroud) 我的目标是使一个osx机器上点击的链接加载到启用了Apple事件的远程计算机上的safari中.为此,我正在尝试创建一个applescript应用程序,然后我在系统上创建默认浏览器.
我的Applecript看起来像这样:
on run argv
set theurl to item 1 of argv
set dest to "eppc://user:password@ipaddress"
tell application "Safari" of machine dest
activate
open location theurl
end tell
end run
Run Code Online (Sandbox Code Playgroud)
如果argv不是用于捕获url的合适方法,我将脚本简化为:
tell application "Safari"
activate
open location "http://www.google.com"
end tell
Run Code Online (Sandbox Code Playgroud)
然后我将其保存为应用程序,并告诉Safari该应用程序应该是默认浏览器,但是当我单击应用程序中的链接时,它完全忽略了我的AppleScript并在Safari中加载了url(不是我指定的url,我点击的网址).
为什么是这样 ?我是否需要为我的Applescript做一些特殊的操作才能充当浏览器?如果我通过双击它来运行我的AppleScript应用程序,它会完全按照它应该执行的操作,但如果我通过"默认浏览器"功能启动它,它根本不会运行,而是Safari接管.
如果有一些简单的事情,我做错了或不做,或者如果我完全错误的方式,请告诉我.
我正在使用Applescript自动执行OSX Finder中的某些任务.该脚本打开一个文件夹并选择该文件夹中的第一个图像.我希望它也能打开"快速查看"窗口(就像用户按下空格键一样).
我确实找到了一种方法,可以使用qlmanage从命令行启动快速查看,但这会打开一个静态快速查看窗口,它不再与查找程序选择相关联.
代码到目前为止:
property folderPath : "/Volumes/Media/Images"
on run {}
tell application "Finder"
activate
set imageFolder to folder (folderPath as POSIX file)
set imageFile to first item of imageFolder
select imageFile
-- show quick look?
end tell
end run
Run Code Online (Sandbox Code Playgroud) 我一直在试图弄清楚如何以编程方式将文件添加到Xcode4项目中,看起来AppleScript将成为可行的方式,但是我遇到了"缺失值"错误.
这是我得到的代码:
tell application "Xcode"
set theProject to first project
set theTarget to first target of theProject
set theBuildPhase to compile sources phase of theTarget
tell first group of theProject
set theFileRef to make new file reference with properties {full path:"/Users/jeff/Projects/XcodeTest/XcodeTest/MyViewController.h", name:"MyViewController.h", path:"XcodeTest/MyViewController.h", path type:group relative}
add theFileRef to theProject
end tell
--tell theBuildPhase to make new build file with properties {build phase:theBuildPhase, name:"MyViewController.h", file reference:theFileRef, target:theTarget, project:theProject}
end tell
Run Code Online (Sandbox Code Playgroud)
我已经尝试了注释掉的行而不是add-command,但这也不起作用(我得到"缺失值").
'添加'错误是:
error "Xcode got an error: file reference id …Run Code Online (Sandbox Code Playgroud) 是否可以使用AppleScript在一半中剪切图像并单独保存?