No tengo MacOS Monterey o un M1 para probar, sin embargo, el ejemplo AppleScript código que se muestra a continuación, se probó en Script Editor en MacOS Catalina con Lengua y región ajustes en Preferencias del sistema ajustado a Inglés (EE.UU.) - Primaria y me ha funcionado sin problemas 1 .
- 1 Asume los ajustes necesarios y apropiados en <strong>Preferencias del sistema </strong>> <strong>Seguridad y privacidad </strong>> <strong>Privacidad </strong>se han fijado/abordado según las necesidades.
El uso de esta script requiere una configuración inicial para que funcione.
- Colocar todo .docx documentos en su propio carpeta por lo que el objetivo carpeta se puede seleccionar cuando el script corre. A lista de todos los .docx documentos en el objetivo carpeta se creará para bucle a través de.
- Abrir Páginas y crear un espacio en blanco documento guardándolo en el carpeta quieres que el otro documentos guardado, y luego minimizarlo. Esto es para permitir Páginas para decir abierto mientras se abre y se cierra el objetivo documentos Así, el proceso general tarda menos tiempo. Ningún otro Páginas documentos debe abrirse. Al nombrar el documento hacer algo que no está dentro de la nombres del otro documentos para ser procesado.
- Abrir Script Editor y copiar y pegar el ejemplo AppleScript código en un nuevo documento , haga clic en el botón Compilar (un icono de un martillo) o pulse K para asegurarse de que no hay problemas de compilación.
- Haga clic en el botón Ejecutar (icono del triángulo que apunta a la derecha) o pulse: R
Que el script se ejecuta de forma ininterrumpida hasta que se termine (o se produzcan errores).
Ejemplo AppleScript código :
property theWordDocumentsList : missing value
property |Pages| : name of ¬
application id "com.apple.iWork.Pages"
-- # Choose the target folder containing
-- # the docx documents for processing.
tell application id "com.apple.finder" to ¬
set theWordDocumentsList to ¬
(files of container (choose folder) ¬
whose name extension is "docx") ¬
as alias list
-- # Loop through: theWordDocumentsList
repeat with thisDocument in theWordDocumentsList
-- # Open the document.
tell application id "com.apple.iWork.Pages"
activate
open thisDocument
end tell
-- # Give a moment for 'Opening "filename.docx"…' to appear.
delay 0.2
tell application id "com.apple.systemevents"
-- # Wait for 'Opening "filename.docx"…' to disappear.
repeat while (role description of ¬
UI element 4 of window 1 of ¬
application process |Pages|) is "button"
delay 0.1
end repeat
-- # Click 'Save As… S' to save as a Pages document.
key code 1 using {shift down, option down, command down}
-- # Wait for the 'Save' button to be available.
repeat until exists ¬
button "Save" of sheet 1 of window 1 of ¬
application process |Pages|
delay 0.1
end repeat
-- # Press the 'Save' button.
key code 36 -- # enter key
-- # Wait for the 'Save' button to to disappear.
repeat while exists ¬
button "Save" of sheet 1 of window 1 of ¬
application process |Pages|
delay 0.1
end repeat
end tell
-- # Close the document.
delay 0.2
tell application id "com.apple.iWork.Pages" to close document 1
delay 0.5
end repeat
-- # Notify user processing if finished.
tell current application to activate
display alert "Processing finished!…"
Notas:
Como el script utiliza Guiones de interfaz de usuario puede ser kludgy y propensos a fallar por diferentes razones. Por ejemplo, los cambios en el UI de una versión de MacOS a otro o al objetivo aplicación . Intentar hacer varias cosas a la vez mientras se está ejecutando, lo que es un no-no para este tipo de script ¡! El valor de la delay
comandos fuera del repeat
bucles necesitan ser ajustados.
He probado con un 10 documento conjunto de muestras con el documentos que van de 1 a 7 páginas y en mi sistema, un 16" 2019 MacBook Pro Intel Core i9 de 8 núcleos a 2,3 GHz, y tardó menos de 40 segundos. Esto equivaldría a ~6,5 minutos para 100 documentos . Obviamente, esto variará en función del tamaño del documentos y la velocidad del sistema en el que se ejecuta.
Siempre se puede probar con, o ejecutar en varios grupos, con un número menor de documentos .
Aunque podría añadirse, no he incluido ninguna tratamiento de errores en torno a lo existente documentos si el script falla y debe reiniciarse, por lo que hay que tener en cuenta que el .docx documentos que ya han sido convertidos deben ser eliminados manualmente antes de iniciar el script de nuevo.
Nota: El <em>ejemplo </em><strong>AppleScript </strong><em>código </em>es sólo eso y sin ningún tipo de inclusión <em>tratamiento de errores </em>no contiene ningún otro <em>tratamiento de errores </em>según corresponda. Corresponde al usuario añadir cualquier <em>tratamiento de errores </em>como sea apropiado, necesario o deseado. Eche un vistazo a la <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129232" rel="nofollow noreferrer"><strong>pruebe con </strong></a><em>declaración </em>y <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129657" rel="nofollow noreferrer"><strong>error </strong></a><em>declaración </em>en el <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html" rel="nofollow noreferrer"><strong>Guía del lenguaje AppleScript </strong></a>. Véase también, <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_error_xmpls.html#//apple_ref/doc/uid/TP40000983-CH221-SW1" rel="nofollow noreferrer"><strong>Trabajar con errores </strong></a>. Además, el uso de la <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html#//apple_ref/doc/uid/TP40000983-CH216-SW10" rel="nofollow noreferrer"><strong>retraso </strong></a><em>comando </em>puede ser necesario entre eventos cuando sea apropiado, por ejemplo <code>delay 0.5</code> con el <em>valor </em>de la <em>retraso </em>ajustado apropiadamente.