Escritura básica

La API de Presentaciones de Google te permite agregar y modificar elementos en las páginas de presentación. En los ejemplos de esta página, se muestra cómo realizar operaciones comunes de lectura con el método presentations.batchUpdate.

En estos ejemplos, se usan las siguientes variables:

  • PRESENTATION_ID: Indica dónde proporcionas el ID de presentación. Puedes descubrir el valor de este ID desde la URL de presentación.
  • PAGE_ID: Indica dónde proporcionas el ID de objeto de página. Puedes recuperar el valor para esto desde la URL o mediante una solicitud de lectura de la API.
  • PAGE_ELEMENT_ID: Indica dónde proporcionas el ID de objeto de elemento de página. Puedes especificar este ID para los elementos que creas (con algunas restricciones) o permitir que la API de Presentaciones cree uno automáticamente. Los IDs de elementos se pueden recuperar a través de una solicitud de lectura de la API.

Estos ejemplos se presentan como solicitudes HTTP para que no tengan idioma. Para aprender a implementar una actualización por lotes en diferentes lenguajes con las bibliotecas clientes de la API de Google, consulta Cómo agregar formas y texto.

Cómo agregar un cuadro de texto a una diapositiva

En la siguiente muestra de código de presentations.batchUpdate, se indica cómo usar el método CreateShapeRequest para agregar un nuevo cuadro de texto (que contiene la cadena "Mi cuadro de texto agregado") a una diapositiva especificada por PAGE_ID. Se especifican dos solicitudes en el cuerpo de la solicitud: una para crear la forma del cuadro de texto (con un tamaño y una ubicación determinados) y otra para insertar texto.

La primera solicitud especifica el ID de objeto que se usará en el cuadro de texto. Esto permite que la segunda solicitud lo use en la misma llamada a la API, y que se reduzca la sobrecarga.

El siguiente es el protocolo de solicitud para agregar un cuadro de texto a una diapositiva:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "createShape": {
        "objectId": PAGE_ELEMENT_ID,
        "shapeType": "TEXT_BOX",
        "elementProperties": {
          "pageObjectId":  PAGE_ID,
          "size": {
            "width": {
              "magnitude": 150,
              "unit": "PT"
            },
            "height": {
              "magnitude": 50,
              "unit": "PT"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 200,
            "translateY": 100,
            "unit": "PT"
          }
        }
      }
    },
    {
      "insertText": {
        "objectId": PAGE_ELEMENT_ID,
        "text": "My Added Text Box",
        "insertionIndex": 0
      }
    }
  ]
}

Cómo agregar una imagen a una diapositiva

En la siguiente muestra de código presentations.batchUpdate, se indica cómo usar el método CreateImageRequest para agregar una imagen a una diapositiva especificada por PAGE_ID. La API recupera la imagen con el IMAGE_URL. Esta solicitud también escala y posiciona la imagen en la diapositiva.

El siguiente es el protocolo de solicitud para agregar una imagen a una diapositiva:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "createImage": {
        "url": IMAGE_URL,
        "elementProperties": {
          "pageObjectId":  PAGE_ID,
          "size": {
            "width": {
              "magnitude": 30,
              "unit": "PT"
            },
            "height": {
              "magnitude": 30,
              "unit": "PT"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 200,
            "translateY": 100,
            "unit": "PT"
          }
        }
      }
    }
  ]
}

Cómo borrar una página o un elemento de página

En la siguiente muestra de código de presentations.batchUpdate, se muestra cómo usar el método DeleteObjectRequest para borrar el elemento de página especificado por PAGE_ELEMENT_ID y la diapositiva especificada por PAGE_ID con dos solicitudes separadas.

El siguiente es el protocolo de solicitud para borrar una página o un elemento de página:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "deleteObject": {
        "objectId": PAGE_ELEMENT_ID
      },
      "deleteObject": {
        "objectId":  PAGE_ID
      }
    }
  ]
}

Cómo editar texto en una forma especificada

En la siguiente muestra de código presentations.batchUpdate, se indica cómo usar el método DeleteTextRequest para reemplazar una parte del texto presente en la forma especificada por PAGE_ELEMENT_ID. Para ello, primero borra el texto con startIndex basado en cero y, luego, inserta texto nuevo en esa posición. En este ejemplo, la cadena de texto original "My Shape Text: ????" se reemplaza por "My Shape Text: Trapezoid".

Esta solicitud solo afecta al texto en una forma especificada. Para reemplazar texto en todas partes de una presentación, usa el método ReplaceAllTextRequest.

El siguiente es el protocolo de solicitud para editar texto en una forma especificada:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "deleteText": {
        "objectId": PAGE_ELEMENT_ID,
        "textRange": {
          "type": "FROM_START_INDEX",
          "startIndex": 15
        }
      }
    },
    {
      "insertText": {
        "objectId": PAGE_ELEMENT_ID,
        "text": "Trapezoid",
        "insertionIndex": 15
      }
    }
  ]
}

Cómo reemplazar una etiqueta de forma por una imagen

Las etiquetas son cuadros de texto o formas con un nombre de cadena único, como "nombre-del-titular-de-la-cuenta".

En la siguiente muestra de código de presentations.batchUpdate, se muestra cómo usar el método CreateImageRequest para reemplazar una sola instancia de una etiqueta de forma por una imagen, manteniendo la misma posición y ajustándola para que se adapte al tamaño de la etiqueta y, al mismo tiempo, se mantenga la relación de aspecto de la imagen.

La solicitud también se puede usar para reemplazar una imagen por otra. La solicitud consiste en agregar la imagen nueva y, luego, borrar la etiqueta.

El método CreateImageRequest solo reemplaza una forma especificada. Para reemplazar las formas de etiquetas en cualquier parte de una presentación, usa un método ReplaceAllShapesWithImageRequest.

La etiqueta de forma tiene las siguientes propiedades PageElement (que se pueden encontrar con una solicitud presentations.pages.get):

{
  "objectId": PAGE_ELEMENT_ID,
  "size": {
    "width": {
      "magnitude": 3000000,
      "unit": "EMU"
    },
    "height": {
      "magnitude": 3000000,
      "unit": "EMU"
    }
  },
  "transform": {
    "scaleX": 1.13,
    "scaleY": 0.62,
    "translateX": 4800000,
    "translateY":  450000,
    "unit": "EMU"
  },
  "shape": {
    "shapeType": "RECTANGLE"
  }
}

La forma reside en la diapositiva especificada por PAGE_ID. Para especificar la imagen que reemplaza la forma, la API la recupera con IMAGE_URL. Para conservar la relación de aspecto de la imagen y limitarla al tamaño de la etiqueta, el método CreateImageRequest establece el tamaño de la imagen según el tamaño y la escala de la etiqueta y los factores de escala de la imagen en 1. Para obtener más información, consulta Cómo preservar la relación de aspecto.

A continuación, se incluye el protocolo de solicitud para reemplazar una etiqueta de forma por una imagen:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "createImage": {
        "url": IMAGE_URL,
        "elementProperties": {
          "pageObjectId":  PAGE_ID,
          "size": {
            "width": {
              "magnitude": 3000000 * 1.13,
              "unit": "EMU"
            },
            "height": {
              "magnitude": 3000000 * 0.62,
              "unit": "EMU"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 4800000,
            "translateY": 450000,
            "unit": "PT"
          }
        }
      }
    },
    {
      "deleteObject": {
        "objectId": PAGE_ELEMENT_ID
      }
    }
  ]
}