¿Cómo interactuar con una hoja de Números a través de AppleScript?

Esta pregunta está relacionada con:

donde estoy tratando de encontrar una manera de hacer lo que quiero usando AppleScript.

He estado buscando en la web para encontrar una manera de configurar la hoja activa en Números antes de intentar hacer una modificación allí. Los pasos preliminares son esencialmente:

tell application "Numbers"
    activate
    try
        set the chosenDocumentFile to "/path/to/myfile.numbers"
        open the chosenDocumentFile
    on error errorMessage number errorNumber
        if errorNumber is not -128 then
            display alert errorNumber message errorMessage
        end if
    end try
    tell chosenDocumentFile
        try
            -- this is where I'm stuck
        end try
    end tell
end tell

La mayoría de las cosas que he encontrado en línea hablan sobre la creación o eliminación de hojas, pero no he encontrado nada que proporcione un ejemplo claro de cómo seleccionar una hoja.

En mi caso, actualmente tengo 5 hojas en mi hoja de cálculo. Sé que quiero seleccionar la segunda hoja para actuar ( sheet 2-¿verdad?)

He intentado:

open the sheet 2

open sheet 2

select sheet 2

activate sheet 2

Ninguno de ellos parece funcionar, y todos evitan que tryse ejecute la siguiente línea de código dentro de esa declaración adjunta.

Espero que haya una respuesta realmente simple para esto (todavía tengo mucho que hacer antes de obtener el código para hacer todo lo que quiero, pero estoy atrapado aquí ahora).

Respuestas (2)

Hasta donde yo sé, Numbers no tiene un comando AppleScript explícito para seleccionar una hoja determinada.

Existe la active sheet propiedad del documento , por ejemplo,

tell application "Numbers" to get active sheet of front document

que devolverá el active sheet; sin embargo, aunque uno podría pensar que, por ejemplo,

tell application "Numbers" to set active sheet of front document to sheet 2

suponiendo que haya un sheet 2, se establecería, por ejemplo, sheet 2en active sheet, no se establece como active sheet.

Aquí está el método que uso las marcas dadas sheeten active sheetel documento frontal:

Nota: Este es un método de piratería y hace que un documento guardado se muestre como editado, aunque no altere el valor de la celda de destino . Funciona estableciendo el valor de cell "A1"en su valor actual , por lo que, si bien se percibe como una edición, no se ha alterado ningún dato de su valor actual . Sin embargo, me funciona en Numbers 5.1 en macOS High Sierra, y es por eso que lo uso.

my selectSheet(2)

on selectSheet(n)
    try
        tell application "Numbers"
            activate
            set value of first cell of first table of sheet n of front document to ¬
                (value of first cell of first table of sheet n of front document)
        end tell
        --  # Press escape key to remove focus from cell A1.
        tell application "System Events" to key code 53
    on error eStr number eNum
        display dialog eStr & " number " & eNum buttons {"OK"} ¬
            default button 1 with icon caution
        return
    end try
end selectSheet

Nota: El código AppleScript de ejemplo es solo eso y, sin ningún manejo de errores incluido , no contiene ningún otro manejo de errores que pueda ser apropiado. El usuario tiene la responsabilidad de agregar cualquier manejo de errores que sea apropiado, necesario o deseado. Eche un vistazo a la declaración de prueba y la declaración de error en la Guía del lenguaje AppleScript . Consulte también Trabajar con errores .

Eso no parece funcionar para mí en Automator. Aparece el siguiente error: "Automator no puede enviar pulsaciones de teclas. Número 1002"
Corrección: funciona en cuanto a que la hoja se vuelve visible / activa, pero no elimina el foco en la celda; si comento esa parte del código, funciona. Tengo problemas para establecer un valor en la celda específica que quiero, pero es posible que deba actualizar esta publicación o hacer una posterior para solucionarlo...
@ghoti, ¡nunca mencionaste en el OP que estás ejecutando el código AppleScript de Automator! Funciona para mí, sin problemas, cuando se ejecuta en un flujo de trabajo de Automator; sin embargo, he agregado Automator a Preferencias del sistema> Seguridad y privacidad> Accesibilidad de privacidad en macOS High Sierra. ¿Lo está ejecutando desde un flujo de trabajo, una aplicación o un servicio de Automator (acción rápida en macOS Mojave) y en qué sistema operativo? En cuanto a otro código AppleScript, realmente debería preguntar eso en una pregunta diferente e incluir tanto el código como una captura de pantalla del flujo de trabajo de Automator.
Mi error: generalmente incluyo detalles del entorno cuando publico preguntas: MacOS X Mojave (10.14.5), Numbers 6.1, Automator 2.9. Estoy pensando en convertir este código en un Servicio específicamente para usar en esta hoja de cálculo en particular. El cambio de Preferencias del sistema parece funcionar. ¡Gracias!
Después de varias preguntas y respuestas y cambios en el diseño, esto terminó como: Números de AppleScript: Procesar datos de Quicken

Con retraso…

set active sheet of document 1 to sheet 2 of document 1

Básicamente, debe especificar qué documento para cada hoja de referencia.

Por supuesto, si incluye un bloque de información del documento, puede evitarlo:

tell document 1 of application "Numbers"

    set active sheet to sheet 2
    
end tell
¡Obras! Camino a seguir.