Escritura básica

La API de Google Slides 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 de lectura comunes 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 a 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 ID 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 neutro. Si quieres aprender a implementar una actualización por lotes en diferentes lenguajes con las bibliotecas cliente 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 cuadro de texto nuevo (que contiene la string "MyAdded Text Box") a una diapositiva especificada por la 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 en ella.

La primera solicitud especifica el ID de objeto que se usará para el cuadro de texto. Esto permite que la segunda solicitud lo use en la misma llamada a la API, lo que reduce 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
      }
    }
  ]
}

Agregar una imagen a una diapositiva

En la siguiente muestra de código de 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. Con esta solicitud, también se ajusta 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 indica 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 mediante dos solicitudes separadas.

A continuación, se muestra 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 de presentations.batchUpdate, se indica cómo usar el método DeleteTextRequest para reemplazar una parte del texto presente en la forma que especifica PAGE_ELEMENT_ID. Para ello, primero borra el texto con el elemento 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 dentro de una presentación, usa el método ReplaceAllTextRequest.

A continuación, se muestra 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 string único, como “nombre del titular de la cuenta”.

En la siguiente muestra de código de presentations.batchUpdate, se indica cómo usar el método CreateImageRequest para reemplazar una sola instancia de una etiqueta de forma por una imagen, mantener la misma posición y escalarla para que se ajuste al tamaño de la etiqueta y, al mismo tiempo, mantener 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 formas de etiqueta en todas las partes de una presentación, usa un método ReplaceAllShapesWithImageRequest.

La etiqueta de forma tiene las siguientes propiedades PageElement (que se pueden encontrar mediante 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 el 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 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 conservar la relación de aspecto.

A continuación, se muestra 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
      }
    }
  ]
}