Posso generare un link cliccabile al file locale usando un percorso relativo come "file: /// ~"

1

Questo è lo sfondo:

nella mia azienda, utilizziamo Google Drive e spesso ci comunichiamo il percorso di un determinato file. I percorsi sono lunghi poiché utilizziamo molte cartelle nidificate, quindi è abbastanza noioso e richiede molto tempo per sfogliare tutto ciò.

Ora, nella mia precedente azienda, abbiamo usato un server AFP centrale, quindi il percorso era comune a tutti, quindi avevo creato uno script applescript che poteva ottenere il path afp assoluto del file, le persone hanno incollato quel percorso in una mail o chat e l'utente finale può fare clic su quel percorso che diventa automaticamente un link e il finder si apre, selezionando quel particolare file o cartella a cui il link ha portato.

Il motivo per cui non riesco a utilizzare lo stesso identico script è che la cartella di Google Drive si trova nella cartella home dell'utente. Quindi se il nome dell'utente è Foo il percorso sarà file:///Users/Foo/Google Drive , mentre per l'utente Bar il percorso sarà file:///Users/Bar/Google Drive

Chiaramente il percorso generato dall'utente Foo non funzionerà per la barra utente

Poiché, almeno nel terminale, il percorso verso file:///Users/username equivale a ~ , ho reso il mio script generare collegamenti come file:///~/Google Drive/pathToFolder , ma non funzionano :( Facendo clic su tale link si aprirà il finder , ma non selezionerà il file o la cartella corretti

Questo mi sta facendo impazzire perché sembra che dovrebbe funzionare, ma semplicemente non ... c'è qualche altra sintassi che dovrei provare? Qualche suggerimento?

Grazie in anticipo!

    
posta Iacopo Boccalari 28.02.2015 - 19:54
fonte

1 risposta

3

Ecco la soluzione. Lo script che genera il collegamento genera un URL che inizia con un googledrive:// personalizzato e quindi il percorso del file nella cartella Google Drive.

Quindi ho impostato lincastor per attivare il seguente script per gli URL che iniziano con googledrive://

on handle_url(args)
    set theUnixPath to |URL_PATH| of args
    set theUnixPath to (POSIX path of (path to home folder)) & "Google Drive" & theUnixPath
    set theMacPath to (POSIX file theUnixPath)

    #display dialog "handle url: " & theMacPath 

    tell application "Finder"
        set theItem to item theMacPath
        if (class of theItem) is folder then activate
        reveal theItem
    end tell
    activate application "Finder"

    return 1
end handle_url

Lo script è super facile, prende l'url, collega il percorso alla cartella user home e /Google Drive/ , quindi usa questo percorso generato per aprire il Finder e rivelare l'elemento

    
risposta data 02.03.2015 - 22:07
fonte

Leggi altre domande sui tag