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 obtener el valor para esto desde la URL o a través de una solicitud de lectura de 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 tengan lenguaje neutral. 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 el siguiente ejemplo de código de presentations.batchUpdate, se muestra cómo usar el método CreateShapeRequest para agregar un cuadro de texto nuevo (que contiene la cadena "My Added Text Box") 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 una segunda para insertar texto en él.

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 el siguiente ejemplo de código de presentations.batchUpdate, se muestra cómo usar el método CreateImageRequest para agregar una imagen a una diapositiva especificada por PAGE_ID. La API recupera la imagen con 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
      }
    }
  ]
}

Editar texto en una forma especificada

En la siguiente muestra de código de presentations.batchUpdate, se muestra cómo usar el método DeleteTextRequest para reemplazar una parte del texto presente en la forma especificada por PAGE_ELEMENT_ID. Para lograrlo, 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 cualquier parte 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
      }
    }
  ]
}

Reemplaza una etiqueta de forma por una imagen

Las etiquetas son cuadros de texto o formas con un nombre de cadena único, como "nombre-titular-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 preservar la relación de aspecto de la imagen y, al mismo tiempo, limitarla al tamaño de la etiqueta, el método CreateImageRequest establece el tamaño de la imagen en el producto del 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.

El siguiente es 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
      }
    }
  ]
}