Automator 应用程序中的 Applescript 不会拖放。一直要文件

Posted

技术标签:

【中文标题】Automator 应用程序中的 Applescript 不会拖放。一直要文件【英文标题】:Applescript in Automator Application won't drag and drop. Keeps asking for file 【发布时间】:2022-01-11 03:05:23 【问题描述】:

我正在使用 Automator 应用程序(拖放)来重命名一些文件。我想做的一件事是去掉 zip 文件的“从哪里来”。此脚本有效,除了它在运行时询问文件,而允许我将文件拖放到应用程序图标的顶部。

我做错了什么?如何使应用程序可拖放?

on deleteWhereFrom(fileToClean)
    try
        set posixPath to quoted form of POSIX path of fileToClean
        do shell script "xattr -d com.apple.metadata:kMDItemWhereFroms " & posixPath
    end try
end deleteWhereFrom
on open zip
    repeat with i in zip
        deleteWhereFrom(i)
    end repeat
end open
on run
    set zip to choose file with multiple selections allowed
    repeat with i in zip
        deleteWhereFrom(i)
    end repeat
end run

【问题讨论】:

你不需要 Automator,只需要一个 AppleScript script 保存为 application .看看:Processing Dropped Files and Folders 谢谢。但是,我实际上在该 Automator 脚本中有一串其他命令(重命名、替换等)。剥离“从哪里来”只是我需要做的一部分。当它到达那一点时,它会要求文件而不是从我已经在应用程序上删除的文件中删除“从哪里来”。也许我误解了你的建议? Automator 应用程序是获取被删除项目的工具,因此请使用 AppleScript 操作的输入参数(文件项目列表)而不是打开处理程序(或 choose file 命令)。跨度> 好的,谢谢。我现在有了。我可以手动抓取文件并且它可以工作。我希望有一种方法可以将它们拖到应用程序图标上并让它工作。 文件可以拖到 AppleScript 或 Automator 应用程序上。 【参考方案1】:

AppleScript 应用程序中,打开处理程序用于将项目拖放到 droplet 上。然而,在 Automator 应用程序中,拖放到应用程序上的项目被传递到工作流中的第一个操作,该操作执行它所做的任何事情并将其结果传递给工作流中的下一个操作,依此类推。

对于Run AppleScript动作,它的输入在run handler的input参数中,这是一个从前面动作传递过来的项目列表,当run handler完成它所做的一切时,返回结果是传递给以下操作的内容。

在您的原始示例中,问题在于 Run AppleScript 操作未使用工作流中传递的任何项目,而是使用 choose file 来请求要使用的项目(再次) .你的脚本应该是:

on run input, parameters
   repeat with i in input
      deleteWhereFrom(i)
   end repeat
   return input -- return the input items to any following actions
end run

on deleteWhereFrom(fileToClean)
   try
      set posixPath to quoted form of POSIX path of fileToClean
      do shell script "xattr -d com.apple.metadata:kMDItemWhereFroms " & posixPath
   end try
end deleteWhereFrom

请注意,根据您之前使用的任何操作,您可能需要在工作流开始时使用 Set Value of Variable 操作来保存原始项目(拖到应用程序上的项目),然后使用 @987654327 @action(根据需要设置其“忽略此操作的输入”选项)以获取这些原始项目,以便将它们传递给Run AppleScript 操作。

【讨论】:

@red_menance 非常感谢您的解决方案并向我解释。显然,我不擅长编写脚本。你让我的日子更轻松,也教育了我!!!

以上是关于Automator 应用程序中的 Applescript 不会拖放。一直要文件的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 中的 UI Automator 2.0 项目

使用minSdkVersion 9的项目中的UI Automator

使用 Automator/Applescript 输入数据?

如何通过automator创建自动化备份任务?

用Xcode和Automator制作workflow

Deepl Translator 的 Automator 快速操作 (AppleScript)