Differenza tra variabile e pipe to shell in applescript

1

Nel rispondere a questa domanda ho scritto questo script:

global presenterNotes 
tell application "Keynote"
    activate
    open (choose file)
    tell front document
        set presenterNotes to presenter notes of every slide as text
            set the clipboard to presenterNotes
        do shell script "pbpaste > ~/keynote-notes.txt"
    end tell    
    quit application "Keynote" end tell

La mia domanda è: nell'istanza sopra riportata quando sostituisco l'istruzione "script shell" con l'istruzione seguente perché questa istruzione funziona:

tell application "TextEdit"
        activate
        make new document
        set text of front document to presenterNotes
        quit application "TextEdit"
    end tell

Esempio 1: ma questo non lo è:

tell application "TextEdit"
        activate
        make new document with data presenterNotes as text

Esempio 2: né:

make new document with presenterNotes

So che ci sono altri modi per farlo funzionare come copia negli appunti e quindi emettere un comando + c.

Vorrei capire perché la variabile globale non viene trasferita al documento textEdit, in particolare nell'Esempio 1 sopra, poiché il applescript non genera un errore.

    
posta Deesbek 21.08.2014 - 17:17
fonte

1 risposta

1

C'è un errore nascosto che viene generato quando si esegue il proprio script "di lavoro" ... È necessario eseguire il bump della parte shell script del codice nel proprio blocco tell current application come mostrato nel secondo esempio di seguito. .

Questa versione funziona per me con la creazione di un documento TextEdit:

global presenterNotes
tell application "Keynote"
    activate
    -- open (choose file)
    tell front document
        set presenterNotes to presenter notes of every slide as text
        set the clipboard to presenterNotes
    end tell
    tell application "TextEdit"
        activate
        make new document with properties {name:"KeynoteNotes.txt"}
        set text of front document to presenterNotes
    end tell
end tell

Versione della shell pbpaste con blocco appropriato per evitare l'errore -10004:

global presenterNotes
tell application "Keynote"
    activate
    -- open (choose file)
    tell front document
        set presenterNotes to presenter notes of every slide as text
        set the clipboard to presenterNotes
    end tell
    tell current application
        do shell script "pbpaste > ~/keynote-notes1.txt"
    end tell
end tell
    
risposta data 21.08.2014 - 21:48
fonte

Leggi altre domande sui tag