Diferencia entre la variable y la tubería a shell en applecript

1

Al responder a esta pregunta escribí este 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

Mi pregunta es: en la instancia anterior cuando sustituyo la declaración "shell script" por la siguiente declaración, ¿por qué funciona esta declaración?

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

Ejemplo 1: pero este no:

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

Ejemplo 2: ni lo hace:

make new document with presenterNotes

Sé que hay otras formas de hacer que funcione como copiar al portapapeles y luego emitir un comando + c.

Me gustaría entender por qué la variable global no se está transfiriendo al documento textEdit, en particular en el Ejemplo 1 anterior, ya que applescript no produce un error.

    
pregunta Deesbek 21.08.2014 - 17:17

1 respuesta

1

Hay un error oculto que se genera cuando ejecutas tu script "de trabajo" ... Debes agrupar la parte shell script del código en su propio bloque tell current application como se muestra en el segundo ejemplo a continuación. .

Esta versión me funciona al crear 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

La versión shell pbpaste con el bloqueo adecuado para evitar el error -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
    
respondido por el beroe 21.08.2014 - 21:48

Lea otras preguntas en las etiquetas