Menggunakan mask kolom

Mask kolom adalah cara bagi pemanggil API untuk mencantumkan kolom yang harus ditampilkan atau diperbarui oleh permintaan. Dengan menggunakan FieldMask, API dapat menghindari pekerjaan yang tidak perlu dan meningkatkan performa. Mask kolom digunakan untuk metode baca dan update di Google Docs API.

Membaca dengan mask kolom

Dokumen dapat berukuran besar, dan sering kali Anda tidak memerlukan setiap bagian dari resource Document yang ditampilkan oleh permintaan baca. Anda dapat membatasi apa yang ditampilkan dalam respons Docs API, menggunakan parameter URL fields. Untuk mendapatkan performa terbaik, secara eksplisit cantumkan hanya kolom yang Anda butuhkan dalam balasan.

Format parameter kolom sama dengan encoding JSON FieldMask. Secara singkat, beberapa kolom yang berbeda dipisahkan dengan koma dan subkolom dipisahkan dengan titik. Nama kolom dapat ditentukan dalam camelCase atau separated_by_underscores. Agar praktis, beberapa sub-kolom dari jenis yang sama dapat dicantumkan dalam tanda kurung.

Contoh permintaan documents.get berikut menggunakan mask kolom title,tabs(documentTab(body.content(paragraph))),revisionId untuk mengambil title dokumen, Paragraph objek Body (dari semua tab), dan revisionId dokumen dalam dokumen:

GET https://docs.googleapis.com/v1/documents/documentId?fields=title,tabs(documentTab(body.content(paragraph))),revisionId

Respons terhadap panggilan metode ini adalah objek Document yang berisi komponen yang diminta di mask kolom:

{
  "title": "TITLE",
  "revisionId": "REVISION_ID",
  "tabs": [
    {
      "documentTab": {
        "body": {
          "content": [
            {},
            {
              "paragraph": {
                "elements": [
                  {
                    "startIndex": 1,
                    "endIndex": 59,
                    "textRun": {
                      "content": "CONTENT",
                      "textStyle": {}
                    }
                  }
                ],
                "paragraphStyle": {
                  "namedStyleType": "NORMAL_TEXT",
                  "direction": "LEFT_TO_RIGHT"
                }
              }
            }
          ]
        }
      }
    }
  ]
}

Memperbarui dengan mask kolom

Terkadang, Anda hanya perlu mengupdate kolom tertentu dalam objek sambil mempertahankan kolom lainnya. Permintaan pembaruan di dalam operasi documents.batchUpdate menggunakan mask kolom untuk memberi tahu API kolom mana yang diubah. Permintaan update mengabaikan kolom apa pun yang tidak ditentukan dalam mask kolom, sehingga nilai saat ini tidak berubah.

Anda juga dapat membatalkan setelan kolom dengan tidak menetapkannya di pesan yang diupdate, tetapi menambahkan kolom ke mask. Ini akan menghapus nilai apa pun yang ada di {i>field <i}sebelumnya.

Sintaksis untuk mask kolom update sama dengan mask kolom baca.

Contoh berikut menggunakan UpdateTextStyleRequest untuk menata gaya kata "Google Docs API" dalam dokumen sebagai cetak tebal dalam range 5–20:

POST https://docs.googleapis.com/v1/documents/documentId:batchUpdate
{
  "title": "TITLE",
  "revisionId": "REVISION_ID",
  "suggestionsViewMode": "SUGGESTIONS_INLINE",
  "documentId": "DOCUMENT_ID",
  "tabs": [
    {
      "documentTab": {
        "body": {
          "content": [
            {
              "endIndex": 1,
              "sectionBreak": {
                "sectionStyle": {
                  "columnSeparatorStyle": "NONE",
                  "contentDirection": "LEFT_TO_RIGHT",
                  "sectionType": "CONTINUOUS"
                }
              }
            },
            {
              "startIndex": 1,
              "endIndex": 59,
              "paragraph": {
                "elements": [
                  {
                    "startIndex": 1,
                    "endIndex": 5,
                    "textRun": {
                      "content": "CONTENT",
                      "textStyle": {}
                    }
                  },
                  {
                    "startIndex": 5,
                    "endIndex": 20,
                    "textRun": {
                      "content": "CONTENT",
                      "textStyle": {
                        "bold": true
                      }
                    }
                  },
                  {
                    "startIndex": 20,
                    "endIndex": 59,
                    "textRun": {
                      "content": "CONTENT",
                      "textStyle": {}
                    }
                  }
                ],
                "paragraphStyle": {
                  "namedStyleType": "NORMAL_TEXT",
                  "direction": "LEFT_TO_RIGHT"
                }
              }
            }
          ]
        },
        {
          ... // style details
        },
      }
    }
  ],
}