필드 마스크 사용

필드 마스크는 요청이 반환하거나 업데이트해야 하는 필드를 API 호출자가 나열할 수 있는 방법입니다. FieldMask를 사용하면 API에서 불필요한 작업을 피하고 성능을 개선할 수 있습니다. 필드 마스크는 Google Sheets API의 읽기 메서드와 업데이트 메서드에 모두 사용됩니다.

필드 마스크를 사용하여 읽기

스프레드시트는 클 수 있으며 종종 읽기 요청에서 반환된 Spreadsheet 리소스의 모든 부분이 필요하지는 않습니다. fields URL 매개변수를 사용하여 Sheets API 응답에서 반환되는 항목을 제한할 수 있습니다. 최상의 성능을 위해서는 답장에 필요한 필드만 명시적으로 나열하세요.

필드 매개변수의 형식은 FieldMask의 JSON 인코딩과 동일합니다. 간단히 말해 여러 필드가 쉼표로 구분되고 하위 필드는 점으로 구분됩니다. 필드 이름은 camelCase로 지정하거나 밑줄로_구분하여 지정할 수 있습니다. 편의상 동일한 유형의 여러 하위 필드를 괄호 안에 나열할 수 있습니다.

다음 spreadsheets.get 요청 예에서는 sheets.properties(sheetId,title,sheetType,gridProperties) 필드 마스크를 사용하여 스프레드시트의 모든 시트에 있는 SheetProperties 객체의 시트 ID, 제목, SheetType, GridProperties만 가져옵니다.

GET https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId?fields=sheets.properties(sheetId,title,sheetType,gridProperties)

이 메서드 호출에 대한 응답은 필드 마스크에서 요청된 구성요소가 포함된 Spreadsheet 객체입니다. sheetType=OBJECT에는 gridProperties가 포함되어 있지 않습니다.

{
  "sheets": [
    {
      "properties": {
        "sheetId": SHEET_ID,
        "title": "TITLE",
        "sheetType": "GRID",
        "gridProperties": {
          "rowCount": 1000,
          "columnCount": 25
        }
      }
    },
    {
      "properties": {
        "sheetId": SHEET_ID,
        "title": "TITLE",
        "sheetType": "OBJECT"
      }
    }
  ]
}

필드 마스크를 사용하여 업데이트

객체의 특정 필드만 업데이트하고 다른 필드는 변경하지 않은 상태로 두어야 하는 경우가 있습니다. spreadsheets.batchUpdate 작업 내의 업데이트 요청은 필드 마스크를 사용하여 변경되는 필드를 API에 알립니다. 업데이트 요청은 필드 마스크에 지정되지 않은 필드를 무시하고 현재 값을 그대로 둡니다.

업데이트된 메시지에서 필드를 지정하지 않고 마스크에 필드를 추가하여 필드 설정을 해제할 수도 있습니다. 이렇게 하면 이전에 필드에 있던 값이 지워집니다.

업데이트 필드 마스크의 구문은 읽기 필드 마스크와 동일합니다.

다음 예에서는 AddSheetRequest를 사용하여 Grid 유형의 새 시트를 추가하고, 첫 번째 행을 고정하고, 새 시트의 탭을 빨간색으로 지정합니다.

POST https://sheets.googleapis.com/v1/spreadsheets/spreadsheetId:batchUpdate
{
  "spreadsheetId": "SPREADSHEET_ID",
  "replies": [
    {
      "addSheet": {
        "properties": {
          "sheetId": SHEET_ID,
          "title": "TITLE",
          "index": 6,
          "sheetType": "GRID",
          "gridProperties": {
            "rowCount": 1000,
            "columnCount": 26,
            "frozenRowCount": 1
          },
          "tabColor": {
            "red": 0.003921569
          },
          "tabColorStyle": {
            "rgbColor": {
              "red": 0.003921569
            }
          }
        }
      }
    }
  ]
}