Automator Quick Action - 运行 文件夹中每个项目的 AppleScript

Automator Quick Action - Run AppleScript on each item in folder

我正在尝试在 Automator 中构建一个快速操作,我可以在任何文件夹上 运行,这将在该文件夹内的每个 .pdf 文件上逐一 运行 以下 AppleScript - 等待第一个完成,然后再开始下一个文件。

目前我只有我想要 运行 的 AppleScript 代码,但我不知道如何将它附加到快速操作并使其成为每个 pdf 上的代码 运行里面的项目。

注意:每次文件夹中的PDF文件数量可能不同。

on run {input, parameters}

    set theFile to input's item 1

    set theSeconds to time of (current date)

    tell application "Finder"
        set theDuplicate to duplicate file "Macintosh HD:Users:username:Documents:IddTest:template.indd"
    end tell

    tell application "Adobe InDesign 2020" to open file (theDuplicate as string)

    tell application "Adobe InDesign 2020"
        if document 1 exists then
            repeat 34 times
                tell document 1
                    relink link "placeholder.pdf" to theFile
                    try
                        update link "placeholder.pdf"
                    end try
                end tell
            end repeat
        end if
    
        close document 1 saving yes
    end tell

    tell application "Finder"
        set name of theDuplicate to "" & theSeconds & ".indd"
    end tell

end run

请注意,我没有 Adobe InDesign 2020 所以我对你的 AppleScript code 尚未经过测试,但我相信它应该有效。

  • Automator 中创建一个新的 workflow 作为 Quick Action设置如下图所示。

  • 添加 获取文件夹内容 操作.

  • 添加 Filter Finder Items action,设置如下图所示。

  • 添加一个运行AppleScriptaction替换默认的code 与下面的 AppleScript code

示例 AppleScript 代码:

on run {input, parameters}

    repeat with thisFile in input

        set theSeconds to time of (current date)

        tell application "Finder"
            set theDuplicate to duplicate file "Macintosh HD:Users:username:Documents:IddTest:template.indd"
        end tell

        tell application "Adobe InDesign 2020"
            open file (theDuplicate as string)
            delay 2
            if document 1 exists then
                repeat 34 times
                    tell document 1
                        relink link "placeholder.pdf" to thisFile
                        try
                            update link "placeholder.pdf"
                        end try
                    end tell
                end repeat
            end if
            close document 1 saving yes
        end tell

        tell application "Finder"
            set name of theDuplicate to "" & theSeconds & ".indd"
        end tell
    
    end repeat

end run