Jump to content

MS Word templates with nested arrays and more


Recommended Posts

I am new to AutoIt, I intend to migrate a Word document automation already implemented (in no-code DocuPilot platform) to AutoIt. The costs of these platforms per document are quite high.

The strategy is as follows: we have a very sophisticated ms word template with nested sections and visibility conditions. The data source to fill is a json with nested arrays. Basically a nested array => a section in document.

I am trying to get documented in AutoIt scripts and I am still not clear how to do it:  I see that it is possible to "parse" the input json to AutoIt structures but then I am not clear how to employ the word.au3 functions to host the information in its corresponding section.

Any idea or indication of how to do it?
Muchas gracias!

 

sample json:

{
    "cliente_nombre_op": "AYUNTAMIENTO DE TINEO",
    "contacto_nombre_op": "PEPITO SANZ",
    "email_organizador_op": "pepito.sanz@tineo.es",
    "fecha_apertura_op": "17/07/2023",
    "fechahora_fin_op": "19/07/2023 20:00",
    "fechahora_inicio_op": "18/07/2023 00:00",
    "id_op": "010/2023",
    "nombre_archivo_doc": "010-EXTRA DE DOS DIAS",
    "nombre_op": "EXTRA DE DOS DIAS",
    "observaciones_op": "",
    "ofertas": [
        {
            "asociaciones": [
                {
                    "descripcion_asociacion": "AMBULANCIA ASISTENCIAL CLASE C (SVA) - 1 TES + 1 DUE",
                    "dia_asociacion": "MARTES, DÍA 18",
                    "fechahora_fin_asociacion": "18/07/2023 20:00",
                    "fechahora_inicio_asociacion": "18/07/2023 00:00",
                    "importe_asociacion": "2.288,80",
                    "observaciones_asociacion": "",
                    "recursos": [
                        {
                            "articulo_no_facturable": false,
                            "cantidad_recurso": 20,
                            "de_inicio_a_fin_recurso": "de 18/07 00:00h. a 20:00h.",
                            "descripcion_recurso": "AMBULANCIA ASISTENCIAL CLASE C (SVA) - 1 TES + 1 DUE",
                            "descuento_recurso": "0,00",
                            "fechahora_fin_recurso": "18/07/2023 20:00",
                            "fechahora_inicio_recurso": "18/07/2023 00:00",
                            "importe_recurso": "2.288,80",
                            "observaciones_recurso": "",
                            "precio_neto_recurso": "114,44",
                            "precio_recurso": "114,44"
                        }
                    ],
                    "ubicacion_asociacion": ""
                },
                {
                    "descripcion_asociacion": "AMBULANCIA ASISTENCIAL CLASE C (SVA) - 1 TES + 1 DUE",
                    "dia_asociacion": "MIÉRCOLES, DÍA 19",
                    "fechahora_fin_asociacion": "19/07/2023 20:00",
                    "fechahora_inicio_asociacion": "19/07/2023 00:00",
                    "importe_asociacion": "2.288,80",
                    "observaciones_asociacion": "",
                    "recursos": [
                        {
                            "articulo_no_facturable": false,
                            "cantidad_recurso": 20,
                            "de_inicio_a_fin_recurso": "de 19/07 00:00h. a 20:00h.",
                            "descripcion_recurso": "AMBULANCIA ASISTENCIAL CLASE C (SVA) - 1 TES + 1 DUE",
                            "descuento_recurso": "0,00",
                            "fechahora_fin_recurso": "19/07/2023 20:00",
                            "fechahora_inicio_recurso": "19/07/2023 00:00",
                            "importe_recurso": "2.288,80",
                            "observaciones_recurso": "",
                            "precio_neto_recurso": "114,44",
                            "precio_recurso": "114,44"
                        }
                    ],
                    "ubicacion_asociacion": ""
                },
                {
                    "descripcion_asociacion": "AMBULANCIA ASISTENCIAL CLASE B (SVB) - 2 TES",
                    "dia_asociacion": "MARTES, DÍA 18",
                    "fechahora_fin_asociacion": "18/07/2023 20:00",
                    "fechahora_inicio_asociacion": "18/07/2023 00:00",
                    "importe_asociacion": "982,60",
                    "observaciones_asociacion": "",
                    "recursos": [
                        {
                            "articulo_no_facturable": false,
                            "cantidad_recurso": 20,
                            "de_inicio_a_fin_recurso": "de 18/07 00:00h. a 20:00h.",
                            "descripcion_recurso": "AMBULANCIA ASISTENCIAL CLASE B (SVB) - 2 TES",
                            "descuento_recurso": "0,00",
                            "fechahora_fin_recurso": "18/07/2023 20:00",
                            "fechahora_inicio_recurso": "18/07/2023 00:00",
                            "importe_recurso": "982,60",
                            "observaciones_recurso": "",
                            "precio_neto_recurso": "49,13",
                            "precio_recurso": "49,13"
                        }
                    ],
                    "ubicacion_asociacion": ""
                },
                {
                    "descripcion_asociacion": "AMBULANCIA ASISTENCIAL CLASE B (SVB) - 2 TES",
                    "dia_asociacion": "MIÉRCOLES, DÍA 19",
                    "fechahora_fin_asociacion": "19/07/2023 20:00",
                    "fechahora_inicio_asociacion": "19/07/2023 00:00",
                    "importe_asociacion": "982,60",
                    "observaciones_asociacion": "",
                    "recursos": [
                        {
                            "articulo_no_facturable": false,
                            "cantidad_recurso": 20,
                            "de_inicio_a_fin_recurso": "de 19/07 00:00h. a 20:00h.",
                            "descripcion_recurso": "AMBULANCIA ASISTENCIAL CLASE B (SVB) - 2 TES",
                            "descuento_recurso": "0,00",
                            "fechahora_fin_recurso": "19/07/2023 20:00",
                            "fechahora_inicio_recurso": "19/07/2023 00:00",
                            "importe_recurso": "982,60",
                            "observaciones_recurso": "",
                            "precio_neto_recurso": "49,13",
                            "precio_recurso": "49,13"
                        }
                    ],
                    "ubicacion_asociacion": ""
                }
            ],
            "clausulas": [
                {
                    "descripcion_clausula": "*Exento de IVA según el art. 20.1. 15º de la Ley 37/1992, de 28 de diciembre, del Impuesto sobre el Valor Añadido."
                },
                {
                    "descripcion_clausula": "*Como colaboración con la organización del evento, se aplica un descuento, por lo que el importe final será 6.600,00 €"
                }
            ],
            "dias": [
                {
                    "asociaciones_por_dia": [
                        {
                            "de_inicio_a_fin_asociacion_por_dia": "de 18/07 00:00h. a 20:00h.",
                            "descripcion_asociacion_por_dia": "AMBULANCIA ASISTENCIAL CLASE C (SVA) - 1 TES + 1 DUE",
                            "importe_asociacion_por_dia": "2.288,80",
                            "observaciones_asociacion_por_dia": ""
                        },
                        {
                            "de_inicio_a_fin_asociacion_por_dia": "de 18/07 00:00h. a 20:00h.",
                            "descripcion_asociacion_por_dia": "AMBULANCIA ASISTENCIAL CLASE B (SVB) - 2 TES",
                            "importe_asociacion_por_dia": "982,60",
                            "observaciones_asociacion_por_dia": ""
                        }
                    ],
                    "descripcion_dia": "MARTES, 18 DE JULIO"
                },
                {
                    "asociaciones_por_dia": [
                        {
                            "de_inicio_a_fin_asociacion_por_dia": "de 19/07 00:00h. a 20:00h.",
                            "descripcion_asociacion_por_dia": "AMBULANCIA ASISTENCIAL CLASE C (SVA) - 1 TES + 1 DUE",
                            "importe_asociacion_por_dia": "2.288,80",
                            "observaciones_asociacion_por_dia": ""
                        },
                        {
                            "de_inicio_a_fin_asociacion_por_dia": "de 19/07 00:00h. a 20:00h.",
                            "descripcion_asociacion_por_dia": "AMBULANCIA ASISTENCIAL CLASE B (SVB) - 2 TES",
                            "importe_asociacion_por_dia": "982,60",
                            "observaciones_asociacion_por_dia": ""
                        }
                    ],
                    "descripcion_dia": "MIÉRCOLES, 19 DE JULIO"
                }
            ],
            "hay_importe_mejorado_oferta": true,
            "hay_lista_opcionales": true,
            "importe_mejorado_oferta": "5.560,00",
            "importe_oferta": "6.542,80",
            "nombre_oferta": "OPCION 1",
            "observaciones_oferta": "",
            "oferta_id": 1,
            "opciones": [
                {
                    "clausulas_opcion": [
                        {
                            "descripcion_clausula_opcion": "*Exento de IVA según el art. 20.1. 15º de la Ley 37/1992, de 28 de diciembre, del Impuesto sobre el Valor Añadido."
                        }
                    ],
                    "hay_importe_mejorado_opcion": true,
                    "importe_mejorado_opcion": "3.040,00",
                    "importe_opcion": "3.600,00",
                    "nombre_opcion": "MEDICO",
                    "observaciones_opcion": "",
                    "opcion_id": 1,
                    "recursos_opcion": [
                        {
                            "articulo_no_facturable_opcion": false,
                            "cantidad_recurso_opcion": 20,
                            "de_inicio_a_fin_recurso_opcion": "de 18/07 00:00h. a 20:00h.",
                            "descripcion_asociacion_de_recurso_opcion": "AMBULANCIA ASISTENCIAL CLASE C (SVA) - 1 TES + 1 DUE",
                            "descripcion_recurso_opcion": "MEDICO/A",
                            "descuento_recurso_opcion": "0,00",
                            "importe_recurso_opcion": "900,00",
                            "observaciones_recurso_opcion": "",
                            "precio_neto_recurso_opcion": "45,00",
                            "precio_recurso_opcion": "45,00"
                        },
                        {
                            "articulo_no_facturable_opcion": false,
                            "cantidad_recurso_opcion": 20,
                            "de_inicio_a_fin_recurso_opcion": "de 19/07 00:00h. a 20:00h.",
                            "descripcion_asociacion_de_recurso_opcion": "AMBULANCIA ASISTENCIAL CLASE C (SVA) - 1 TES + 1 DUE",
                            "descripcion_recurso_opcion": "MEDICO/A",
                            "descuento_recurso_opcion": "0,00",
                            "importe_recurso_opcion": "900,00",
                            "observaciones_recurso_opcion": "",
                            "precio_neto_recurso_opcion": "45,00",
                            "precio_recurso_opcion": "45,00"
                        },
                        {
                            "articulo_no_facturable_opcion": false,
                            "cantidad_recurso_opcion": 20,
                            "de_inicio_a_fin_recurso_opcion": "de 18/07 00:00h. a 20:00h.",
                            "descripcion_asociacion_de_recurso_opcion": "AMBULANCIA ASISTENCIAL CLASE B (SVB) - 2 TES",
                            "descripcion_recurso_opcion": "MEDICO/A",
                            "descuento_recurso_opcion": "0,00",
                            "importe_recurso_opcion": "900,00",
                            "observaciones_recurso_opcion": "",
                            "precio_neto_recurso_opcion": "45,00",
                            "precio_recurso_opcion": "45,00"
                        },
                        {
                            "articulo_no_facturable_opcion": false,
                            "cantidad_recurso_opcion": 20,
                            "de_inicio_a_fin_recurso_opcion": "de 19/07 00:00h. a 20:00h.",
                            "descripcion_asociacion_de_recurso_opcion": "AMBULANCIA ASISTENCIAL CLASE B (SVB) - 2 TES",
                            "descripcion_recurso_opcion": "MEDICO/A",
                            "descuento_recurso_opcion": "0,00",
                            "importe_recurso_opcion": "900,00",
                            "observaciones_recurso_opcion": "",
                            "precio_neto_recurso_opcion": "45,00",
                            "precio_recurso_opcion": "45,00"
                        } 
                    ],
                    "resumen_opcion": ""
                }
            ],
            "resumen_oferta": "1 SVA + 1 TES + 1 DUE:18/07\\n + 1 SVA + 1 TES + 1 DUE:19/07\\n + 1 SVB + 2 TES:18/07\\n + 1 SVB + 2 TES:19/07\\n"
        }
    ],
    "organizador_nombre_op": "AYUNTAMIENTO DE LLANERA",
    "telefono_organizador_op": "658970256",
    "ubicacion_op": ""
}

 

Asturias, spanish dairyland!

Link to comment
Share on other sites

Welcome to AutoIt and the forum!

If you can do manually what should later be automated with AutoIt you could use the macro recorder in MS Word to create a VBA macro. 
This can be translated to AutoIt with manageable effort.

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
Share on other sites

21 hours ago, water said:

Welcome to AutoIt and the forum!

If you can do manually what should later be automated with AutoIt you could use the macro recorder in MS Word to create a VBA macro. 
This can be translated to AutoIt with manageable effort.

Thanks for the answer!! 😀

 

It seems to me that the main obstacle concerns the generation of sections dynamically in the word document. In addition, some visibility conditions are not global but are section specific. 
It is not a simple task of just replacing elements in the document.

On the other hand, the word template is not static, it is "alive" and this will complicate the effort in future maintenance.

 

Asturias, spanish dairyland!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...