1 votos

¿Por qué AppleScript "existe" a veces siempre devuelve "falso"? (parte de la pregunta sobre la comprobación de documentos en las páginas)

Soy nuevo en el AppleScript y he llegado a este problema después de que varios otros problemas y soluciones temporales (ver más abajo para más detalles). Mi problema actual es que os estoy contando las Páginas para comprobar si cualquier documento abierto con

tell application "Pages"
    exists front document
end tell

pero , a veces, incluso cuando las Páginas del documento, abra el "existe", es siempre "false". Y, en general, parece que a veces, cualquier referencia a "frente documento" devuelve errores que no se puede conseguir cuando es claramente no. Cuando me salga de las Páginas y vuelve a intentarlo, por lo general, funciona...hasta que no.

Alguna idea?

Mi problema original se deriva de querer hacer un QuickAction para abrir un archivo en Páginas -> exportar a PDF -> cerrar Páginas -> repetir según sea necesario. Pero el guión se pone delante de sí mismo y trata de completar la exportación antes de que el archivo está abierto.

tell application "Finder"
    set theSelection to selection
    repeat with oneItem in theSelection
        set finderLocation to oneItem as text
        open oneItem
        tell application "Pages"
            set idx to 0
            repeat until (exists front document)
                set idx to idx + 1
                if idx > 2000 then quit
            end repeat
            set pagesLocation to file of front document as text
            repeat until finderLocation = pagesLocation
                set pagesLocation to file of front document as text
            end repeat
            set exportFile to file of front document as text
            set exportFile to text 1 thru -6 of exportFile
            set exportFile to exportFile & "pdf"
            export front document to file exportFile as PDF with properties {image quality:Best}
            close front document without saving
        end tell
    end repeat
end tell

Así que he estado tratando de encontrar una manera de comprobar si el documento es abierto antes de continuar. Y se me ocurrió esto, para comprobar si la parte delantera de archivo de documento de ubicación en las Páginas de los partidos de la ubicación de los archivos abiertos por el Buscador. Esto funcionó hasta que probé a partir de una nueva instancia de Páginas (salir de las Páginas de primera, a continuación, intente). El problema no era que las Páginas que podría marcar un error por no ser capaz de encontrar el "frente de documento" (ya que necesitaba leer su ruta de archivo pero nada estaba abierto todavía).

Así que ahora estoy aquí tratando de comprobar si todo es abierto, antes de comprobar si el archivo está abierto. Pero ahora, como se describe anteriormente, parece que las referencias a "documento" se rompe y causa que "existe" o "archivo de frente documento" para colgar.

Estoy aún en la dirección correcta aquí o hay una manera mejor de hacer esto?

Gracias de antemano.

EDITAR: ahora mi script se parece a esto, y parece ser más consistente, al menos hasta ahora

tell application "Finder"
set theSelection to selection
repeat with oneItem in theSelection
    set nameOfDocument to name of oneItem
    open oneItem
    tell application "Pages"
        repeat until (exists document nameOfDocument)
            delay 0.1
        end repeat
        set exportFile to oneItem as text
        set exportFile to text 1 thru -6 of exportFile
        set exportFile to exportFile & "pdf"
        export document nameOfDocument to file exportFile as PDF with properties {image quality:Best}
        close document nameOfDocument without saving
    end tell
end repeat
end tell

0voto

wch1zpink Puntos 11

El siguiente código AppleScript debería funcionar para usted. Finalmente, este código establece una variable para el recuento de documentos abiertos en las páginas ( openDocuments ) Luego, si el recuento de openDocuments no es 0, los nombres de los documentos abiertos se almacenan en este variable openDocumentNames

 if application "Pages" is not running then
    tell application "Pages" to activate
    tell application "System Events" to tell application process "Pages"
        repeat until frontmost
            delay 0.1
        end repeat
    end tell
end if

tell application "Pages"
    set openDocumentsRef to a reference to documents
    set openDocuments to count of openDocumentsRef
    if openDocuments is not 0 then
        -- Gets The Name Of The Open Files
        set openDocumentNames to name of openDocumentsRef
        -- Gets The File Paths To The Open Files
        set openDocumentsPaths to file of openDocumentsRef
    end if
end tell

-- Shows & Selects The Files In A New Finder Window
tell application "Finder" to reveal openDocumentsPaths
 

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