Usar máscaras de campo

Máscaras de campo são uma forma de os autores da chamada à API listarem os campos que uma solicitação precisa retornar ou atualizar. O uso de uma FieldMask permite que a API evite trabalho desnecessário e melhore a performance. Uma máscara de campo é usada para os métodos de leitura e atualização na API Google Slides.

Ler com uma máscara de campo

As apresentações podem ser grandes, e muitas vezes você não precisa de todas as partes do recurso Presentation retornado por uma solicitação de leitura. É possível limitar o que é retornado em uma resposta da API Slides usando o parâmetro de URL fields. Para extrair o melhor desempenho possível, liste explicitamente apenas os campos necessários na resposta.

O formato do parâmetro de campos é igual à codificação JSON de uma FieldMask. Em resumo, campos diferentes são separados por vírgulas e subcampos são separados por pontos. Os nomes dos campos podem ser especificados em camelCase ou separated_by_underscores. Para fins de conveniência, vários subcampos do mesmo tipo podem ser listados entre parênteses.

O exemplo de solicitação presentations.get a seguir usa uma máscara de campo de slides.pageElements(objectId,size,transform) para buscar apenas o ID do objeto, Size e transformar um objeto pageElement em todos os slides de uma apresentação:

GET https://slides.googleapis.com/v1/presentations/presentationId?fields=slides.pageElements(objectId,size,transform)

A resposta a esta chamada de método é um objeto Presentation que contém os componentes solicitados na máscara de campo:

{
  "slides": [
    {
      "pageElements": [
        {
          "objectId": "OBJECT_ID",
          "size": {
            "width": {
              "magnitude": 3000000,
              "unit": "EMU"
            },
            "height": {
              "magnitude": 3000000,
              "unit": "EMU"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1
            "translateX": 311708,
            "translateY": 744575,
            "unit": "EMU"
          }
        },
        {
          "objectId": "OBJECT_ID",
          "size": {
            "width": {
              "magnitude": 3000000,
              "unit": "EMU"
            },
            "height": {
              "magnitude": 3000000,
              "unit": "EMU"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1
            "translateX": 311700,
            "translateY": 2834125,
            "unit": "EMU"
          }
        }
     ]
    }
  ]
}

Atualizar com uma máscara de campo

Às vezes, é preciso atualizar apenas alguns campos de um objeto e deixar os outros como estão. As solicitações de atualização dentro de uma operação presentations.batchUpdate usam máscaras de campo para informar à API quais campos estão sendo alterados. A solicitação de atualização ignora todos os campos que não estiverem especificados na máscara de campo, deixando-os com os valores atuais.

Você também pode não definir um campo removendo a definição dele na mensagem atualizada, mas adicionando-o à máscara. Isso apaga qualquer valor que o campo tinha anteriormente.

A sintaxe das máscaras de campo de atualização é a mesma que a usada para as máscaras de campo de leitura.

O exemplo a seguir usa o UpdateShapePropertiesRequest para mudar a cor de preenchimento de uma forma para a cor do tema DARK1 e remover a definição do contorno da forma:

POST https://slides.googleapis.com/v1/presentations/presentationId:batchUpdate
{
  "requests": [
    {
      "updateShapeProperties": {
        "objectId": OBJECT_ID,
        "shapeProperties": {
          "shapeBackgroundFill": {
            "solidFill": {
              "color": {
                "themeColor": "DARK1"
              }
            }
          }
        },
        "fields": "shapeBackgroundFill.solidFill.color,outline"
      }
    }
  ]
}