AppleScript zum Anzeigen des Paketinhalts des verborgenen Originals des Alias

5

Ich versuche, einen Automator-Workflow zu erstellen (der als Dienst gespeichert wird, sodass ich über Kontextmenüs auf ihn zugreifen und ihn über eine Tastenkombination aufrufen kann), der dem im Finder integrierten "Show Package" ähnelt Befehl "Contents", der jedoch zusätzlich den Alias ​​eines Pakets als Eingabe akzeptiert. Der Service wird die folgenden Anforderungen erfüllen:

Es ist nur verfügbar, wenn die Auswahl des Finders aus einem Paket oder einem Alias ​​eines Pakets besteht.

Anstatt den Inhalt des Paketverzeichnisses selbst wie beim eingebauten Befehl anzuzeigen, zeigt der Dienst den Inhalt des Verzeichnisses "Contents" (sofern vorhanden) an, das sich unmittelbar im Paketverzeichnis befindet.

Wenn der Finder ein Paket oder ein Alias ​​auf dem Desktop auswählt, sollte das Inhaltsverzeichnis in einem neuen Finder-Fenster geöffnet werden. Andernfalls sollte das Inhaltsverzeichnis im Finder-Fenster mit der Auswahl geöffnet werden.

Mein Ansatz bestand darin, dass das Skript zuerst feststellte, ob es sich bei der Datei um einen Alias ​​handelt, und wenn dies der Fall ist, das Skript anwies, den Inhalt des Originals anzuzeigen. Wenn die Datei kein Alias ​​ist, möchte ich das Skript anweisen, einfach den Inhalt der Eingabe anzuzeigen.

Ohne die Möglichkeit eines Alias ​​als Eingabe und unter der Annahme, dass das Eingabepaket in einem Finder-Fenster ausgewählt ist, kann ich erfolgreich ein Skript schreiben, das den Inhalt des Inhaltsordners des Pakets in demselben Fenster anzeigt:

on run {input, parameters}
    set my_output to {}
    repeat with oneItem in input
        tell application "Finder" to set target of window 1 to ((oneItem as text) & "Contents")
end repeat
return input
end run

Wenn ich versuche, ein "if ... then ... else" -Schema einzurichten, scheitere ich.

Ich verwende die neuesten Versionen aller relevanten Software.

Parker
quelle
Willkommen, wir ignorieren Sie nicht und warten nur auf jemanden, der Ihre Frage beantworten kann.
Ruskes
Bitte können Sie einen fehlgeschlagenen Versuch anhängen, wenn / dann / sonst. Das Debuggen, warum dies fehlschlägt, führt wahrscheinlich zu einer schnelleren Lösung für Sie.
Graham Miln

Antworten:

1

folder "Contents" of funktioniert auch mit aliasen:

on run {input, parameters}
    tell application "Finder"
        repeat with f in input
            open folder "Contents" of f
        end repeat
    end tell
end run

Sie können in den Systemeinstellungen auch eine Verknüpfung zum Anzeigen des Paketinhalts zuweisen:

Command-R zeigt die Originaldatei eines Alias ​​an.

Lri
quelle
1

Sie können so etwas ausprobieren:

   on run {input, parameters}
    tell application "Finder"
        repeat with oneItem in input
            if kind of oneItem = "Alias" then set oneItem to oneItem's original item
            set contentsPath to (oneItem as text) & "Contents"
            if oneItem's container as text = (path to desktop as text) then
                open contentsPath
            else
                set target of window 1 to contentsPath
            end if
            activate
        end repeat
    end tell
end run

Möglicherweise möchten Sie auch einen Test einschließen, um sicherzustellen, dass die Eingabe dem erwarteten Typ entspricht.

adayzdone
quelle
Dieser Workflow schlägt fehl: "Ausführen von AppleScript fehlgeschlagen - 1 Fehler: AppleEvent-Handler fehlgeschlagen."
Parker
Es gab einen zusätzlichen Doppelpunkt. Versuchen Sie es nochmal.
Adayzdone
0

Ich habe es verstanden:

on run {input, parameters}
    tell application "Finder"
        repeat with f in input
            reveal f
            set target of window 1 to (folder "Contents" of f as text)
        end repeat
    end tell
end run
Parker
quelle