Establecer el valor de una celda de Números usando AppleScript

Estoy tratando de escribir un script de números (para hacer esto , como sucede), en el que necesito cambiar el valor de una celda.

Sin embargo, si hago algo como

tell application "Numbers"
    activate
    tell document 1
        tell sheet 3
            set the value of cell "E1" to 1000
        end tell
    end tell
end tell

entonces me sale el error

 error "Numbers got an error: Can’t set cell \"E1\" of sheet 3 of document 1 to 1000." number -10006 from cell "E1" of sheet 3 of document 1

pero esto no contiene información sobre por qué no puede configurar esa celda. El documento, la hoja y la celda existen.

Supongo que esto podría depender de mi hoja de cálculo en particular, pero ¿es esta la forma correcta de establecer el valor de una celda y, de ser así, qué más puedo hacer para entender por qué no funciona?

Estoy pensando que lo que tienes debería funcionar, pero no estoy frente a una Mac en este momento, así que no puedo jugar con esto. Si alguien más no interviene antes de que vuelva a estar frente a una Mac, probaré en mi extremo. Estoy bastante seguro de que el código de error que está recibiendo se refiere a que se le han denegado los permisos de escritura en el archivo. ¿Hay algo que pueda explicar por qué se le negaría el permiso para establecer el valor? ¿Se está ejecutando Números? ¿La hoja de cálculo ya está abierta? ¿Algo más?
@Monomeeth gracias por investigarlo. El archivo existe y está abierto en Numbers. Actualmente es el documento más importante y se guarda en una subcarpeta de mi carpeta Documentos, donde no debería haber problemas con los permisos de archivo.
(Sin embargo, una cosa es que hay muchos otros documentos no guardados abiertos actualmente, que no quiero guardar o cerrar actualmente. Tengo entendido que "documento 1" siempre se refiere a la ventana del frente, pero en realidad no puedo encontrar eso indicado en cualquier documentación, y si me equivoco, supongo que podría estar tratando de establecer una celda en uno de los otros documentos).
Hmm, obtengo errores similares al intentar obtener el nombre del archivo del documento 1 o al intentar obtener el valor de la celda A1 en la hoja 1. Así que supongo que el problema es acceder al documento 1.
por ejemplo error "Numbers got an error: Can’t get cell \"A1\" of sheet 1 of document 1." number -1728 from cell "A1" of sheet 1 of document 1(editaré todo esto en la pregunta más adelante)
El mismo error también si uso tell document named "my document"en lugar de tell document 1. Recibo el mismo error si uso un nombre de documento inexistente.
De acuerdo, tuve la oportunidad de ponerme frente a una Mac nuevamente y actualicé mi respuesta con una solución que debería funcionar. Déjame saber cómo vas.

Respuestas (2)

Estoy nuevamente frente a una Mac y probé su código y también obtuve el mismo error, por lo que probablemente sea algo engañoso en términos de lo que realmente significa.

Sin embargo, jugué un poco con su secuencia de comandos y pude hacer que el código funcionara usando el siguiente código:

tell application "Numbers"
  tell table 1 of sheet 3 of document 1
    set the value of cell 1 of column "E" to 1000
  end tell
end tell

Sin embargo, ahora que tengo esto funcionando, solo quería señalar que parece que está codificando la celda con dificultad, etc. Es decir, si la posición cambia, el script no será dinámico. Si esto es un problema para usted o no, dependerá de lo que intente hacer y de cómo esté diseñada su hoja de cálculo de Numbers.

¡Hurra! Sí, eso funciona; evidentemente, especificar la tabla es el paso necesario que me había perdido.
(Este es un truco rápido que definitivamente no necesita funcionar después de mañana; de lo contrario, lo estaría haciendo correctamente en lugar de codificar. Así que gracias por la respuesta rápida, ¡marcará una gran diferencia y es muy apreciado!)

Hazlo con una sola línea. No es necesario contar anidados.

tell application "Numbers" to set document 1's sheet 1's table 1's cell "E1"'s value to 1000

O una solución más genérica de:

set documentName to "Document 1"
set sheetName to "Sheet 1"
set tableName to "Table 1"
set cellName to "D1"
set newvalue to "2000"

tell application "Numbers" to set document documentName's sheet sheetName's table tableName's cell cellName's value to newvalue