Ejercicio: Insertar y dar formato a un intervalo de texto
En este ejercicio, creará un complemento de Word que inserta rangos de texto y párrafos y da formato a este texto.
Requisitos previos
El desarrollo de complementos de Office para Microsoft Word requiere Word 2016, versión 1711 (compilación 8730.1000 Hacer clic y ejecutar) o posterior. Puede que necesite ser participante de Office Insider para obtener esta versión. Para más información, vea Participar en Office Insider.
Usará Node.js para crear el complemento personalizado de Word en este módulo. En los ejercicios de este módulo se presupone que tiene las herramientas siguientes instaladas en su estación de trabajo del desarrollador.
Importante
En la mayoría de los casos, instalar la última versión de las siguientes herramientas es la mejor opción. Las versiones enumeradas aquí fueron usadas la última vez que se publicó y se probó este módulo.
- Node.js : (la versión de LTS activa)
- npm (instalado con Node.js)
- Yeoman : v4.x (o superior)
- Generador de Yeoman para Microsoft Office : v1.9.5
- Visual Studio Code
Crear el proyecto de complemento
Ejecute el siguiente comando para crear un proyecto de complemento con el generador de Yeoman:
yo office
Nota:
Cuando ejecute el comando yo office, es posible que reciba mensajes sobre las directivas de recopilación de datos de Yeoman y las herramientas de la CLI de complementos de Office. Use la información adecuada que se proporciona para responder a los mensajes.
Cuando se le pida, proporcione la siguiente información para crear el proyecto de complemento:
- Seleccionar un tipo de proyecto: Proyecto del panel de tareas del complemento de Office
- Seleccionar un tipo de script: JavaScript
- ¿Qué nombre quiere asignar al complemento? Mi complemento de Office
- ¿Qué aplicación cliente de Office quiere admitir? Word
Después de completar el asistente, cambie a la carpeta del proyecto creada por el generador (Complemento de Mi Office) e instale los módulos npm mediante la ejecución de npm install.
Sugerencia
Al instalar dependencias, puede omitir las advertencias o errores que muestra el generador de Yeoman. El resto de esta unidad incluye todos los pasos que deberá seguir.
Insertar un rango de texto
En esta sección, comprobará mediante programación que el complemento es compatible con la versión actual de Word del usuario y, después, insertará un párrafo en el documento.
Programe el complemento
Abra el proyecto en el editor de código.
Abra el archivo ./src/taskpane/taskpane.html. El archivo contiene el formato HTML para el panel de tareas.
Busque el elemento
<main>
y elimine todas las líneas que aparecen detrás de la etiqueta de apertura<main>
y antes de la etiqueta de cierre</main>
.Agregue el siguiente marcado inmediatamente después de la etiqueta de apertura
<main>
:<button class="ms-Button" id="insert-paragraph">Insert Paragraph</button><br/><br/>
Abra el archivo ./src/taskpane/taskpane.js. Este archivo contiene el código de la API de JavaScript de Office que permite la interacción entre el panel de tareas y la aplicación host de Office.
Para quitar todas las referencias al botón ejecutar y a la función
run()
, siga estos pasos:- Busque y elimine la línea
document.getElementById("run").onclick = run;
. - Encuentre y elimine la función
run()
completa.
- Busque y elimine la línea
En la llamada al método
Office.onReady()
, busque la líneaif (info.host === Office.HostType.Word) {
y agregue el código siguiente inmediatamente después de esa línea:// Determine if the user's version of Office supports all the Office.js APIs that are used in the tutorial. if (!Office.context.requirements.isSetSupported('WordApi', '1.3')) { console.log('Sorry. The tutorial add-in uses Word.js APIs that are not available in your version of Office.'); } // Assign event handlers and other initialization logic. document.getElementById("insert-paragraph").onclick = insertParagraph;
Nota:
- La primera parte de este código determina si la versión del usuario de Word admite una versión de Word.js que incluye todas las API usadas en este tutorial. En un complemento de producción, use el cuerpo del bloque condicional para ocultar o deshabilitar la interfaz de usuario que llama a las API no admitidas. Esto permitirá al usuario usar las partes del complemento compatibles con su versión de Word.
- En la segunda parte de este código se agrega un controlador de eventos para el botón insert-paragraph.
Agregue la siguiente función al final del archivo:
async function insertParagraph() { await Word.run(async (context) => { // TODO1: Queue commands to insert a paragraph into the document. await context.sync(); }) .catch(function (error) { console.log("Error: " + error); if (error instanceof OfficeExtension.Error) { console.log("Debug info: " + JSON.stringify(error.debugInfo)); } }); }
Nota:
- La lógica de negocios de Word.js se agregará a la función que se pasa a
Word.run
. Esta lógica no se ejecuta inmediatamente. En su lugar, se agrega a una cola de comandos pendientes. - El método
context.sync
envía todos los comandos en cola a Word para su ejecución. Word.run
va seguido de un bloquecatch
. Este es el procedimiento recomendado que debe seguir siempre.
- La lógica de negocios de Word.js se agregará a la función que se pasa a
En la función
insertParagraph()
, reemplaceTODO1
con el código siguiente:const docBody = context.document.body; docBody.insertParagraph("Office has several versions, including Office 2016, Microsoft 365 Click-to-Run, and Office on the web.", "Start");
Nota:
- El primer parámetro del método
insertParagraph
es el texto del nuevo párrafo. - El segundo parámetro es la ubicación en el cuerpo donde se insertará el párrafo. Otras opciones para insertar un párrafo, si el objeto principal es el cuerpo, son "End" y "Replace".
- El primer parámetro del método
Guarde todos los cambios en los archivos taskpane.html y taskpane.js.
Probar el complemento
Complete los pasos siguientes para iniciar el servidor web local y hacer una transferencia local del complemento:
Nota:
Los complementos de Office deben usar HTTPS y no HTTP, incluso cuando está desarrollando. Si le pedirá que instale un certificado después de ejecutar uno de los siguientes comandos, acepte la solicitud para instalar el certificado que proporciona el generador Yeoman.
Sugerencia
Si va a probar el complemento en macOS, ejecute el siguiente comando en el directorio raíz del proyecto antes de continuar. Al ejecutar este comando, se iniciará el servidor web local.
npm run dev-server
Para probar el complemento en Word, ejecute el siguiente comando en el directorio raíz del proyecto. Se iniciará el servidor web local (si todavía no está en ejecución) y se abrirá Word con el complemento cargado.
npm start
Para probar el complemento en Word en la web, ejecute el siguiente comando en el directorio raíz del proyecto. Al ejecutar este comando, se iniciará el servidor web local (si todavía no está en ejecución).
npm run start:web
Para usar el complemento, abra un nuevo documento en Word en la Web y, después, transfiera localmente el complemento siguiendo las instrucciones en Transferir localmente complementos de Office en Office en la Web.
En Word, seleccione la pestaña Inicio y seleccione el botón Mostrar panel de tareas de la cinta de opciones para abrir el panel de tareas del complemento.
En el panel de tareas, seleccione Insertar párrafo.
Realice un cambio en el párrafo.
Vuelva a seleccionar el botón Insertar párrafo. El nuevo párrafo aparece encima del anterior porque el método
insertParagraph*()
se inserta al principio del cuerpo del documento.
Dar formato al texto
En esta sección, aplicará un estilo integrado al texto, así como un estilo personalizado, y cambiará la fuente del texto.
Aplicar un estilo integrado al texto
Abra el archivo ./src/taskpane/taskpane.html.
Busque el elemento
<button>
para el botón insert-paragraph y agregue la siguiente revisión después de esa línea:<button class="ms-Button" id="apply-style">Apply Style</button><br/><br/>
Abra el archivo ./src/taskpane/taskpane.js.
En la llamada al método
Office.onReady()
, busque la línea siguiente en el métodoOffice.onReady()
:document.getElementById("insert-paragraph").onclick = insertParagraph;
Agregue el código siguiente inmediatamente después de esa línea:
document.getElementById("apply-style").onclick = applyStyle;
Agregue la siguiente función al final del archivo:
async function applyStyle() { await Word.run(async (context) => { // TODO1: Queue commands to style text. await context.sync(); }) .catch(function (error) { console.log("Error: " + error); if (error instanceof OfficeExtension.Error) { console.log("Debug info: " + JSON.stringify(error.debugInfo)); } }); }
En la función
applyStyle()
, reemplaceTODO1
con el siguiente código. El código aplica un estilo a un párrafo, pero también puede aplicar estilos a rangos de texto.const firstParagraph = context.document.body.paragraphs.getFirst(); firstParagraph.styleBuiltIn = Word.Style.intenseReference;
Aplicar un estilo personalizado al texto
Abra el archivo ./src/taskpane/taskpane.html.
Busque el elemento
<button>
para el botón apply-style y agregue la siguiente revisión después de esa línea:<button class="ms-Button" id="apply-custom-style">Apply Custom Style</button><br/><br/>
Abra el archivo ./src/taskpane/taskpane.js.
En la llamada al método
Office.onReady()
, busque la línea siguiente en el métodoOffice.onReady()
:document.getElementById("apply-style").onclick = applyStyle;
Agregue el código siguiente inmediatamente después de esa línea:
document.getElementById("apply-custom-style").onclick = applyCustomStyle;
Agregue la siguiente función al final del archivo:
async function applyCustomStyle() { await Word.run(async (context) => { // TODO1: Queue commands to apply the custom style. await context.sync(); }) .catch(function (error) { console.log("Error: " + error); if (error instanceof OfficeExtension.Error) { console.log("Debug info: " + JSON.stringify(error.debugInfo)); } }); }
En la función
applyCustomStyle()
, reemplaceTODO1
con el siguiente código. El código aplica un estilo personalizado que aún no existe. Creará un estilo con el nombre MyCustomStyle en un paso posterior.const lastParagraph = context.document.body.paragraphs.getLast(); lastParagraph.style = "MyCustomStyle";
Compruebe que guardó todos los cambios que realizó en el proyecto.
Cambiar la fuente del texto
Abra el archivo ./src/taskpane/taskpane.html.
Busque el elemento
<button>
para el botón apply-custom-style y agregue la siguiente revisión después de esa línea:<button class="ms-Button" id="change-font">Change Font</button><br/><br/>
Abra el archivo ./src/taskpane/taskpane.js.
En la llamada al método
Office.onReady()
, busque la línea siguiente en el métodoOffice.onReady()
:document.getElementById("apply-custom-style").onclick = applyCustomStyle;
Agregue el código siguiente inmediatamente después de esa línea:
document.getElementById("change-font").onclick = changeFont;
Agregue la siguiente función al final del archivo:
async function changeFont() { await Word.run(async (context) => { // TODO1: Queue commands to apply a different font. await context.sync(); }) .catch(function (error) { console.log("Error: " + error); if (error instanceof OfficeExtension.Error) { console.log("Debug info: " + JSON.stringify(error.debugInfo)); } }); }
En la función
changeFont()
, reemplaceTODO1
con el siguiente código. El código recibe una referencia al segundo párrafo mediante el métodoParagraphCollection.getFirst()
encadenado al métodoParagraph.getNext()
.const secondParagraph = context.document.body.paragraphs.getFirst().getNext(); secondParagraph.font.set({ name: "Courier New", bold: true, size: 18 });
Compruebe que guardó todos los cambios que realizó en el proyecto.
Probar el complemento
Si el servidor web local ya se está ejecutando y el complemento ya está cargado en Word, continúe con el paso 2. Si no, inicie el servidor web local y transfiera localmente el complemento:
Para probar el complemento en Word, ejecute el siguiente comando en el directorio raíz del proyecto. Se iniciará el servidor web local (si todavía no está en ejecución) y se abrirá Word con el complemento cargado.
npm start
Para probar el complemento en Word en la web, ejecute el siguiente comando en el directorio raíz del proyecto. Al ejecutar este comando, se iniciará el servidor web local (si todavía no está en ejecución).
npm run start:web
Para usar el complemento, abra un nuevo documento en Word en la Web y, después, transfiera localmente el complemento siguiendo las instrucciones en Transferir localmente complementos de Office en Office en la Web.
Si el panel de tareas del complemento aún no está abierto en Word, vaya a la pestaña Inicio y seleccione Mostrar panel de tareas.
Asegúrese de que hay al menos tres párrafos en el documento. Puede elegir el botón Insertar párrafo tres veces. Compruebe cuidadosamente que no hay ningún párrafo en blanco al final del documento. Si lo hay, elimínelo.
En Word, cree un estilo personalizado denominado MyCustomStyle. Puede tener el formato que quiera.
Seleccione el botón Aplicar estilo. Al primer párrafo se le aplicará el estilo integrado Referencia intensa.
Seleccione el botón Aplicar estilo personalizado. Al último párrafo se le aplicará el estilo personalizado. (Si no ocurre nada, el último párrafo podría estar en blanco. Si es así, agréguele texto).
Seleccione el botón Cambiar fuente. La fuente del segundo párrafo cambia a 18 puntos, negrita, Courier New.
Resumen
En este ejercicio, ha creado un complemento de Word que inserta rangos de texto y párrafos y da formato a ese texto.