AppleScript and Finder - Come rilevare una selezione "vuota" quando si copiano i percorsi negli Appunti (domanda estesa)

4

Sto cercando di creare un servizio che faccia quanto segue:

  • Se alcuni file / cartelle sono selezionati in Finder, copia (tutti) i percorsi negli appunti
  • Se non è selezionato nulla, copia il "Percorso" della finestra.

Avvicinarsi e trarre ispirazione da post come Copia di il percorso della directory corrente negli appunti e Copia il percorso del file o della cartella negli Appunti in Mac OS X Lion Devo il punto in cui posso ottenere i percorsi della selezione, ma mi sembra di essere bloccato quando cerco di ottenere il percorso della finestra corrente se la selezione è vuota.

AGGIORNAMENTO 13-Dec-2013. Ho alcuni feedback utili (vedi link ; grazie @Flavin) così ho aggiornato il codice a quello qui di seguito:

    on run {input, parameters}

        set l to {}
        tell application "Finder"
            set sel to (get selection)
            if not sel = {} then -- there are some file/folders selected

                repeat with f in (get selection)
                    set end of l to POSIX path of (f as alias)
                end repeat

            else --no stuff is selected, get the current location path

                set end of l to POSIX path of (insertion location as alias)

            end if
        end tell
        set text item delimiters to linefeed
        set the clipboard to (l as text)

    end run

La logica sembra solida e funziona fintanto che ho selezionato "qualcosa" in Finder.

Sospetto che il Servizio potrebbe non essere "Attivo" quando non è selezionato nulla, (cioè, quando il risultato desiderato sarebbe copiare il percorso corrente negli Appunti).

In questa situazione, la finestra del Finder appare così:

Macercandodiattivareilserviziomostraunelencodiservizi"vuoto":

Quandohoselezionatoqualcosa,l'elencoServizièpopolato:

Il "Percorso file copia" che ho definito è associato a "File e cartelle" nelle Preferenze servizi - quale potrebbe essere il problema?

    
posta JJarava 12.12.2013 - 16:35
fonte

2 risposte

1

Ora funziona. La chiave è su come è definito il servizio "Automator".

Quando inizialmente configurato, il servizio Automator è stato definito come "File o cartella" in "Finder":

QuindinellePreferenzeilServizioèassociatoaFileeCartelle:

E il risultato è che il servizio non è "attivo" quando non c'è alcuna selezione (otteniamo la stessa immagine che nella domanda):

Modificadelladefinizionedelserviziosu"Nessun input":

SignificacheilservizioèdisponibilequandononvièalcunaselezionenelFinder:

Controllando le Preferenze Servizi, ora il Servizio è associato alla categoria "Generale":

E il comportamento è come previsto.

    
risposta data 13.12.2013 - 23:45
fonte
2

Penso che = sia quello che stai cercando.

set sel to (get selection)
if not sel = {} then
    --stuff is selected
else
    --no stuff is selected
end if

Oppure rimuovi not e capovolgi i casi

set sel to (get selection)
if sel = {} then
    --no stuff is selected
else
    --stuff is selected
end if
    
risposta data 12.12.2013 - 16:48
fonte

Leggi altre domande sui tag