Esto es un poco largo, pero aquí va
Usando AppleScript (vainilla, por favor), quiero automatizar la hoja de cálculo de Numbers que hice para las cuentas de las clases de música de mi esposa (que usa cuatro veces al año - ella es la única usuaria).
Este es mi primer proyecto AppleScript. He encontrado algunas partes individuales, que funcionan parcialmente, y me gustaría que me ayudaran a encajarlas.
script 1A y script 1B deberían combinarse en UN script, pero no sé cómo hacerlo.
script 1 sólo tiene que ejecutarse una vez, después de que ella (manualmente) abra la hoja de cálculo, pero script 2 se ejecutará para cada cuenta de estudiante, para generar un correo electrónico (así que aproximadamente 25 veces individuales)
script 2 necesita obtener información de script 1 - ver más abajo.
La secuencia general debería ser la siguiente:
1) El usuario se asegura de que los contactos están actualizados en el ordenador portátil (Catalina), y abre manualmente la hoja de cálculo de Cuentas. 2) Ejecutar scripts 1A &1B (que será UN scripts) 3) Rellenar los datos 4) Ejecutar scripts 2 5) Compruebe y envíe (manualmente) el correo electrónico. 6) Repetir desde el punto 3) para cada alumno -------------------------------
script 1A
--returns Contacts group’s names and email addresses
set myList to ""
tell application "Contacts" to repeat with p in people in group "testGroup"
if emails of p is {} then
set e to ""
else
set e to value of email 1 of p
end if
set myList to myList & name of p & ":" & e & linefeed -- gives full names
end repeat
(el resultado de esto es por ejemplo ) (No sé si este resultado está en un formato adecuado )
"Peter" Pan:peterpan@gmail.com Joe Bloggs:joebloggs@gmail.com Molly Mouse:mollymouse@gmail.com " ---------- ---------- ---------- -
script 1B DEBE UTILIZAR los elementos del resultado anterior en script 1A, ¡NO la lista de menuItems de abajo!
-- Make Pop-Up Menu in Numbers spreadsheet which is already open.
set menuItems to {"Joe Bloggs", "Molly Mouse", "Peter Pan"}
tell application "Numbers"
activate
tell the first table of the active sheet of document 1
tell cell "A3"
-- Set the cell value to the first menu item required. This also selects the cell.
set value to item 1 of menuItems
-- THEN set the cell format. This causes the menu to adopt the value just set as a single item instead of having the three default items.
set the format to pop up menu
end tell
end tell
end tell
tell application "System Events"
tell application process "Numbers"
set frontmost to true
tell window 1
-- The inspector doesn't have to be visible, but its "Cell" pane does have to be selected. (?)
click radio button "Cell" of radio group 1
-- Adds the remaining items by clicking the "+" button and inputting the texts the required number of times.
repeat with i from 2 to (count menuItems)
click button 1 of group 1 of scroll area -1
keystroke (item i of menuItems)
end repeat
end tell
end tell
end tell
---------- ---------- ---------- -
El usuario selecciona un nombre del menú emergente, que ahora existe, y rellena los detalles de la lección, los cargos, etc.
Luego ejecuta script 2 probablemente pulsando una combinación de teclas en el teclado - la hoja de cálculo suele ejecutarse a pantalla completa en el portátil, por lo que una combinación de teclas simplificaría las cosas ( no es esencial, pero sí conveniente. Puedo asignar la combinación de teclas).
---------- ---------- ----------
script 2
--Make an email, with a screen captured image of the spreadsheet page, ready to send to the address belonging to the selected name in the Pop-Up Menu
set thePath to POSIX path of (path to documents folder) & "IMAGE" & ".jpg"
do shell script "screencapture -R20,80,720,880 -tjpg" & space & quoted form of the thePath
tell application "Mail"
set myMessage to make new outgoing message
set subject of myMessage to "Music Lessons 1st Term"
set content of myMessage to " \r \r \r "
set theAttachedImage to "Macintosh HD:Users:petehunter:Documents:IMAGE.jpg"
--
tell myMessage
make new to recipient at end of to recipients with properties {name:"peterpan@gmail.com “} —Fake name for test purposes! The Script must provide this/these names
make new attachment with properties {file name:theAttachedImage as alias}
end tell
--
activate -- brings Mail to front, for checking, and a manual send.
end tell
---------- ---------- ---------- -
Espero que esto sea lo suficientemente claro. Gracias de antemano por su ayuda.