1 votos

Diferencia entre variable y tubería a shell en applescript

Al responder esta pregunta He escrito 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 el ejemplo anterior cuando reemplazo la declaración "shell script" con la declaración de abajo 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 éste no:

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

Ejemplo 2: tampoco:

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 transfiere al documento textEdit, en particular en el ejemplo 1 anterior, ya que applescript no lanza un error.

1voto

beroe Puntos 1605

Hay un error oculto que se genera cuando ejecutas tu scriptde trabajo... Tienes que saltar el shell script parte del código en su propio tell current application como se muestra en el segundo ejemplo...

Esta versión me funciona con la creación de un documento de 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 cáscara 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

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X