Obtén una vista previa de los vínculos de Google Libros con chips inteligentes

Nivel de programación: Intermedio
Duración: 30 minutos
Tipo de proyecto: Complemento de Google Workspace

Objetivos

  • Comprenda qué hace el complemento.
  • Comprender cómo compilar un complemento con Apps Script y comprender lo que hacen los servicios de Apps Script
  • Configurar el entorno
  • Configura la secuencia de comandos.
  • Ejecuta la secuencia de comandos.

Acerca de este complemento de Google Workspace

En esta muestra, se crea un complemento de Google Workspace con una vista previa de los vínculos de Google Libros en un documento de Documentos de Google. Cuando escribes o pegas una URL de Google Libros en un documento, el complemento reconoce el vínculo y activa una vista previa. Para obtener una vista previa del vínculo, puedes convertirlo en un chip inteligente y colocar el cursor sobre él para ver una tarjeta con más información sobre el libro.

Este complemento usa el servicio UrlFetch de Apps Script para conectarse a la API de Google Libros y obtener información sobre Google Libros para mostrar en Documentos de Google.

Cómo funciona

En el archivo de manifiesto del complemento de Google Workspace, la secuencia de comandos configura el complemento para extender Documentos de Google y activar las vistas previas de vínculos para las URLs que coincidan con ciertos patrones del sitio web de Google Libros (https://books.google.com).

En el archivo de código, la secuencia de comandos se conecta a la API de Google Libros y usa la URL para obtener información sobre el libro (que es una instancia del recurso Volume). La secuencia de comandos usa esta información para generar un chip inteligente que muestre el título del libro y una tarjeta de vista previa que muestra un resumen, la cantidad de páginas, una imagen de la portada del libro y la cantidad de calificaciones.

Servicios de Apps Script

Este complemento usa los siguientes servicios:

Requisitos previos

Para usar esta muestra, necesitas los siguientes requisitos previos:

Configura tu entorno

Abre tu proyecto de Cloud en la consola de Google Cloud.

Si aún no está abierto, abre el proyecto de Cloud que deseas usar para esta muestra:

  1. En la consola de Google Cloud, ve a la página Seleccionar un proyecto.

    Selecciona un proyecto de Cloud

  2. Selecciona el proyecto de Google Cloud que deseas usar. O bien, haz clic en Crear proyecto y sigue las instrucciones en pantalla. Si creas un proyecto de Google Cloud, es posible que debas activar la facturación para el proyecto.

Activar la API de Google Books

Este complemento se conecta a la API de Google Books. Antes de usar las APIs de Google, debes activarlas en un proyecto de Google Cloud. Puedes activar una o más APIs en un solo proyecto de Google Cloud.

Este complemento requiere un proyecto de Cloud con una pantalla de consentimiento configurada. Si configuras la pantalla de consentimiento de OAuth, se define lo que Google mostrará a los usuarios y se registrará tu app para que puedas publicarla más adelante.

  1. En la consola de Google Cloud, ve a Menú > APIs y servicios > Pantalla de consentimiento de OAuth.

    Ir a la pantalla de consentimiento de OAuth

  2. En Tipo de usuario, selecciona Interno y, luego, haz clic en Crear.
  3. Completa el formulario de registro de la app y, luego, haz clic en Save and Continue.
  4. Por ahora, puedes omitir la adición de permisos y hacer clic en Guardar y continuar. En el futuro, cuando crees una app para usarla fuera de tu organización de Google Workspace, deberás cambiar el Tipo de usuario a Externo y, luego, agregar los permisos de autorización que requiera tu app.

  5. Revisa el resumen del registro de tu app. Para realizar cambios, haz clic en Editar. Si el registro de la app es correcto, haz clic en Volver al panel.

Obtén una clave de API para la API de Google Books

  1. Ve a la consola de Google Cloud. Asegúrate de que tu proyecto con facturación habilitada esté abierto.
  2. En la consola de Google Cloud, ve a Menú > APIs y servicios > Credenciales.

    Ir a Credenciales

  3. Haz clic en Crear credenciales > Clave de API.

  4. Toma nota de tu clave de API para usarla en un paso posterior.

Configura la secuencia de comandos

Crea el proyecto de Apps Script

  1. Haz clic en el siguiente botón para abrir el proyecto Apps Script de Google Libros para obtener una vista previa.
    Abre el proyecto.
  2. Haz clic en Descripción general.
  3. En la página de resumen, haz clic en El ícono para crear una copia Crear una copia.
  4. En tu copia del proyecto de Apps Script, ve al archivo Code.gs y reemplaza YOUR_API_KEY por la clave de API que generaste en la sección anterior.

Copia el número del proyecto de Cloud

  1. En la consola de Google Cloud, ve a Menú > IAM y administración > Configuración.

    Ir a Configuración de IAM y administración

  2. En el campo Número de proyecto, copia el valor.

Configura el proyecto de Cloud del proyecto de Apps Script

  1. En tu proyecto de Apps Script, haz clic en El ícono de la configuración del proyecto Configuración del proyecto.
  2. En Proyecto de Google Cloud Platform (GCP), haz clic en Cambiar proyecto.
  3. En el número de proyecto de GCP, pega el número del proyecto de Google Cloud.
  4. Haz clic en Establecer el proyecto.

Prueba el complemento

Instala una implementación de prueba

  1. En tu proyecto de Apps Script, haz clic en Editor.
  2. Abre el archivo Code.gs y haz clic en Ejecutar. Cuando se te solicite, autoriza la secuencia de comandos.
  3. Haz clic en Implementar > Implementaciones de prueba.
  4. Haz clic en Instalar > Listo.
  1. Crea un documento de Documentos de Google en docs.new.
  2. Pega la siguiente URL en el documento y presiona la tecla Tab para convertir la URL en un chip inteligente: https://www.google.com/books/edition/Software_Engineering_at_Google/V3TTDwAAQBAJ
  3. Mantén el puntero sobre el chip inteligente y, cuando se te solicite, autoriza el acceso para ejecutar el complemento. La tarjeta de vista previa muestra información sobre el libro.

En la siguiente imagen, se muestra la vista previa del vínculo:

Una vista previa del vínculo del libro Ingeniería de Software en Google.

Revisa el código

Para revisar el código de Apps Script de este complemento, haz clic en Ver código fuente a continuación:

Ver el código fuente

appsscript.json

solutions/add-on/book-smartchip/appsscript.json
{
  "timeZone": "America/Los_Angeles",
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8",
  "oauthScopes": [
    "https://www.googleapis.com/auth/workspace.linkpreview",
    "https://www.googleapis.com/auth/script.external_request"
  ],
  "urlFetchWhitelist": [
    "https://www.googleapis.com/books/v1/volumes/"
  ],
  "addOns": {
    "common": {
      "name": "Preview Books Add-on",
      "logoUrl": "https://developers.google.com/workspace/add-ons/images/library-icon.png",
      "layoutProperties": {
        "primaryColor": "#dd4b39"
      }
    },
    "docs": {
      "linkPreviewTriggers": [
        {
          "runFunction": "bookLinkPreview",
          "patterns": [
            {
              "hostPattern": "*.google.*",
              "pathPrefix": "books"
            },
            {
              "hostPattern": "*.google.*",
              "pathPrefix": "books/edition"
            }
          ],
          "labelText": "Book",
          "logoUrl": "https://developers.google.com/workspace/add-ons/images/book-icon.png",
          "localizedLabelText": {
            "es": "Libros"
          }
        }
      ]
    }
  }
}

Code.gs

solutions/add-on/book-smartchip/Code.js
function getBook(id) {
  const apiKey = 'YOUR_API_KEY'; // Replace with your API key
  const apiEndpoint = `https://www.googleapis.com/books/v1/volumes/${id}?key=${apiKey}&country=US`;
  const response = UrlFetchApp.fetch(apiEndpoint);
  return JSON.parse(response);
}

function bookLinkPreview(event) {
 if (event.docs.matchedUrl.url) {
    const segments = event.docs.matchedUrl.url.split('/');
    const volumeID = segments[segments.length - 1];

    const bookData = getBook(volumeID);
    const bookTitle = bookData.volumeInfo.title;
    const bookDescription = bookData.volumeInfo.description;
    const bookImage = bookData.volumeInfo.imageLinks.small;
    const bookAuthors = bookData.volumeInfo.authors;
    const bookPageCount = bookData.volumeInfo.pageCount;

    const previewHeader = CardService.newCardHeader()
      .setSubtitle('By ' + bookAuthors)
      .setTitle(bookTitle);

    const previewPages = CardService.newDecoratedText()
      .setTopLabel('Page count')
      .setText(bookPageCount);

    const previewDescription = CardService.newDecoratedText()
      .setTopLabel('About this book')
      .setText(bookDescription).setWrapText(true);

    const previewImage = CardService.newImage()
      .setAltText('Image of book cover')
      .setImageUrl(bookImage);

    const buttonBook = CardService.newTextButton()
      .setText('View book')
      .setOpenLink(CardService.newOpenLink()
        .setUrl(event.docs.matchedUrl.url));

    const cardSectionBook = CardService.newCardSection()
      .addWidget(previewImage)
      .addWidget(previewPages)
      .addWidget(CardService.newDivider())
      .addWidget(previewDescription)
      .addWidget(buttonBook);

    return CardService.newCardBuilder()
    .setHeader(previewHeader)
    .addSection(cardSectionBook)
    .build();
  }
}

Próximos pasos