Beim Erstellen eines Ordners in einem bestimmten Ordner erstellen Sie Unterordner im neuen Ordner

Ich bin neu bei AppleScript und Automator. Ich habe die verschiedenen Threads bei Apple durchsucht, aber nichts Nützliches gefunden.

Nun, mein Problem ist, dass ich einen Ordner habe, dh "Arbeit", auf den ich eine Ordneraktion angewendet habe. Beim Erstellen eines neuen Ordners bei "Arbeit", dh "abc", möchte ich drei neue Ordner in "abc" erstellen. Schauen Sie sich meinen Code an

on adding folder items to this_folder after receiving added_items
  tell application Finder
    repeat with this_item in added_items
        make new folder at this_item with properties {name:"Main"}
        make new folder at this_item with properties {name:"Lower"}
        make new folder at this_item with properties {name:"Upper"}
   end repeat
  end tell
end adding folder items to

Antworten (1)

Das erste, was ich in Ihrem Code falsch sehe, ist tell application Finder, da es Findersich in diesem Fall um eine Variable handelt , da sie nicht in doppelte Anführungszeichen gesetzt wird. Es sollte sein:tell application "Finder"

Das heißt, Sie haben als Tags, macos , mac , applescript und automator und im OP nicht angegeben, wo und wie Sie den Code auf den Zielordner , this_folder, als Ordneraktion angewendet haben . Mit anderen Worten, wenn Sie die Folder-Aktion in Automator erstellt haben und nur diesen Code als Code in einer Run AppleScript- Aktion haben, wird es trotz der doppelten Anführungszeichen um Finder fehlschlagen. Diese Codierungsstruktur ist nur als AppleScript-.scpt- Datei gültig , die a zugewiesen istOrdneraktion mit Ordneraktionen einrichten... im Abschnitt "Dienste" des Kontaktmenüs im Finder .

Der folgende Beispielcode ist, wie ich ihn als AppleScript .scpt- Datei schreiben würde, die einer Ordneraktion zugewiesen wird , indem Ordneraktionen einrichten... im Abschnitt Dienste des Kontaktmenüs im Finder verwendet wird .

on adding folder items to this_folder after receiving added_items
    try
        tell application "Finder"
            repeat with this_item in added_items
                if (class in (get properties of this_item) as string) is "«class cfol»" then
                    make new folder at this_item with properties {name:"Main"}
                    make new folder at this_item with properties {name:"Lower"}
                    make new folder at this_item with properties {name:"Upper"}
                end if
            end repeat
        end tell
    end try
end adding folder items to

Beachten Sie, dass, obwohl durch die Verwendung der try Anweisung Fehler gefressen werden sollten, ich dennoch eine if Anweisung hinzugefügt habe, um sicherzustellen, dass das Element, auf das reagiert wird, ein Ordner und keine Datei ist . Beachten Sie, dass die if Anweisung zwar nicht unbedingt erforderlich ist, meiner Meinung nach jedoch eine angemessenere Methode zum Schreiben von Code darstellt . Sie kann jedoch weggelassen werden, wenn Sie möchten.

Die AppleScript .scpt- Dateien des Benutzers für Ordneraktionen sollten gespeichert werden, z. B.:

/Users/me/Library/Scripts/Folder Action Scripts/filename.scpt

Wenn Sie die Ordneraktion über Automator erstellen , verwenden Sie in der Aktion „AppleScript ausführen“ den folgenden Beispielcode_ :

on run {input, parameters}
    try
        tell application "Finder"
            repeat with this_item in input
                if (class in (get properties of this_item) as string) is "folder" then
                    make new folder at this_item with properties {name:"Main"}
                    make new folder at this_item with properties {name:"Lower"}
                    make new folder at this_item with properties {name:"Upper"}
                end if
            end repeat
        end tell
    end try
end run

Beachten Sie, dass ich beide Beispielcodeblöcke unter den oben genannten Bedingungen getestet habe und sie wie codiert funktionieren.

Ich habe einen Ordner in Dokumenten mit dem Namen "workdir". Ich habe die Ordneraktion darauf angewendet und im Workflow das Dienstprogramm Run AppleScript gezogen, Ihren Code kopiert und gespeichert, aber es funktioniert nicht, wenn Sie einen neuen Ordner in "workdir" erstellen.