0 votos

Convertir por lotes archivos .docx de Word a Pages

Tengo una carpeta con casi 100 documentos de Word que necesito editar en Pages, pero abrirlos como .docx y luego tener que guardarlos como .pages manualmente no es muy conveniente. Por lo tanto, quiero ejecutar un script/herramienta que convierta todos estos documentos de Word al formato de Pages de una vez por todas.

Hasta ahora, he probado estos:

  • Docxtor que funciona perfectamente pero sólo convierte 10 documentos antes de presentar un muro de pago
  • Convertidor de iWork que no hace nada cuando se arrastran archivos a la ventana
  • Varios Automator y AppleScript scripts, ninguno de los cuales ha funcionado

No estoy seguro de dónde ir desde aquí. No tengo ganas de comprar Docxtor (si es que pudiera, el botón de compra en la página web da un error de Paddle), pero puede que esta sea la única solución.

Estoy ejecutando macOS 12 Monterey beta en un MacBook Pro M1.

Si alguien tiene alguna sugerencia, se lo agradecería mucho. Gracias :)

Actualización: Me he dado cuenta de que he interpretado mal iWork Converter, y en realidad es para hacer lo contrario. ¡Sin embargo, todavía estoy un poco atascado aquí!

3voto

user3439894 Puntos 5883

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.

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