Feldmasken verwenden

Mit Feldmasken können API-Aufrufer die Felder auflisten, die eine Anfrage zurückgeben oder aktualisieren soll. Durch die Verwendung einer FieldMask kann die API unnötige Arbeit vermeiden und die Leistung verbessern. Eine Feldmaske wird sowohl für die Lese- als auch für die Aktualisierungsmethoden in der Google Sheets API verwendet.

Mit einer Feldmaske lesen

Tabellen können groß sein und oft benötigen Sie nicht alle Teile der Spreadsheet Ressource, die von einer Leseanfrage zurückgegeben werden. Sie können die zurückgegebenen Daten in einer Sheets API-Antwort mit dem URL-Parameter fields einschränken. Für eine optimale Leistung sollten Sie nur die Felder explizit auflisten, die Sie benötigen in der Antwort.

Das Format des Parameters „fields“ entspricht der JSON-Codierung einer Feldmaske. Kurz gesagt: Mehrere verschiedene Felder werden kommagetrennt und Unterfelder durch Punkte. Feldnamen können in camelCase oder mit_Unterstrichen_getrennt angegeben werden. Zur Vereinfachung können mehrere Unterfelder desselben Typs in Klammern aufgeführt werden.

Im folgenden spreadsheets.get Anfragebeispiel wird eine Feldmaske von sheets.properties(sheetId,title,sheetType,gridProperties)verwendet, um nur die Tabellenblatt-ID, den Titel, SheetType, und GridProperties eines SheetProperties Objekts für alle Tabellenblätter in einer Tabelle abzurufen:

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

Die Antwort auf diesen Methodenaufruf ist ein Spreadsheet Objekt, das die in der Feldmaske angeforderten Komponenten enthält. sheetType=OBJECT enthält keine gridProperties:

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

Mit einer Feldmaske aktualisieren

Manchmal müssen Sie nur bestimmte Felder in einem Objekt aktualisieren, während die anderen Felder unverändert bleiben. Bei Aktualisierungsanfragen in einem spreadsheets.batchUpdate -Vorgang werden Feldmasken verwendet, um der API mitzuteilen, welche Felder geändert werden. Die Aktualisierungsanfrage ignoriert alle Felder, die nicht in der Feldmaske angegeben sind, und behält ihre aktuellen Werte bei.

Sie können ein Feld auch aufheben, indem Sie es nicht in der aktualisierten Nachricht angeben, aber der Maske hinzufügen. Dadurch wird der vorherige Wert des Felds gelöscht.

Die Syntax für Feldmasken für Aktualisierungen ist dieselbe wie für Feldmasken für Lesevorgänge.

Im folgenden Beispiel wird das AddSheetRequest verwendet, um ein neues Tabellenblatt vom Typ Gridhinzuzufügen, die erste Zeile einzufrieren und den Tab des neuen Tabellenblatts rot zu färben:

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
            }
          }
        }
      }
    }
  ]
}