Durante la creazione di una cartella in una cartella specifica, crea sottocartelle nella nuova cartella

1

Sono nuovo di AppleScript e Automator. Ho esplorato i diversi thread di Apple ma non sono riuscito a trovare qualcosa di utile.

Bene, il mio problema è che ho una cartella in cui lavoro. Ho applicato un'azione di cartella su di essa. Nella creazione di una nuova cartella in "lavoro" i.e "abc" voglio creare tre nuove cartelle in "abc". Controlla il mio codice

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
    
posta Breathe Hacker 10.08.2017 - 17:45
fonte

1 risposta

1

La prima cosa che vedo male nel tuo codice è tell application Finder , in quanto Finder in questo caso è una variabile , poiché non è doppia citazione. Dovrebbe essere: tell application "Finder"

Detto questo, hai come tag, macos , mac , applescript e automator e non hai specificato nell'OP dove e come hai applicato il codice alla cartella di destinazione , this_folder , come Azione cartella . In altre parole, se hai creato Azione cartella in Automator e hai appena quel codice come code in un Esegui AppleScript azione , anche con le virgolette attorno a Finder , fallirà. La struttura di codifica è valida solo come file AppleScript .scpt assegnato a Azione cartella utilizzando Impostazione azioni cartella ... nella sezione Servizi del menu di contatto in Finder .

Il seguente codice di esempio è come lo scriverei come un AppleScript .scpt file assegnato a Azione cartella utilizzando Impostazione azioni cartella ... nella sezione Servizi del menu di contatto in Finder .

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

Si noti che anche se si utilizza l'istruzione try , dovrebbe mangiare qualsiasi errore, tuttavia, ho anche aggiunto una dichiarazione% em_de% per assicurarmi la voce su cui si agisce è una cartella , non un file . Nota che anche se la if istruzione non è assolutamente necessaria, è comunque un modo più corretto di scrivere code a mio avviso, tuttavia, potrebbe essere escluso se < em> tu vuoi.

I file AppleScript .scpt dell'utente per Azioni cartella devono essere salvati in, ad esempio:

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

Se stai creando l'azione Cartella tramite Automator , nell'azione Esegui AppleScript usa il seguente esempio codice _:

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

Nota che ho provato entrambi i blocchi di codice di esempio nelle condizioni sopra indicate e funziona come codificato.

    
risposta data 10.08.2017 - 20:52
fonte

Leggi altre domande sui tag