資料作業

Google 試算表 API 可讓您以各種方式操控試算表中的資料。使用者透過 Google 試算表 UI 執行的大部分操作,也可以透過 Google 試算表 API 執行。本頁的範例說明如何使用 Sheets API 執行一些常見的試算表作業。

這些範例以 HTTP 要求的形式呈現,以便不受語言限制。如要瞭解如何使用 Google API 用戶端程式庫,以不同語言實作批次更新,請參閱「更新試算表」。

在這些範例中,預留位置 SPREADSHEET_IDSHEET_ID 會指出您要提供這些 ID 的位置。你可以在試算表網址中找到試算表 ID。您可以使用 spreadsheets.get 方法取得工作表 ID。範圍使用 A1 標記法指定。範例範圍為 Sheet1!A1:D5。

將資料驗證套用至範圍

以下 spreadsheets.batchUpdate 程式碼範例說明如何使用 SetDataValidationRequest 將資料驗證規則套用至 A1:D10 範圍內的每個儲存格,其中「值 > 5」。

要求通訊協定如下所示。

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "setDataValidation": {
        "range": {
          "sheetId": SHEET_ID,
          "startRowIndex": 0,
          "endRowIndex": 10,
          "startColumnIndex": 0,
          "endColumnIndex": 4
        },
        "rule": {
          "condition": {
            "type": "NUMBER_GREATER",
            "values": [
              {
                "userEnteredValue": "5"
              }
            ]
          },
          "inputMessage": "Value must be > 5",
          "strict": true
        }
      }
    }
  ]
}

複製及貼上儲存格格式

以下 spreadsheets.batchUpdate 程式碼範例說明如何使用 CopyPasteRequest 僅複製 A1:D10 範圍的格式,並貼到同一工作表中的 F1:I10 範圍。此方法會使用 PasteType 列舉與 PASTE_FORMAT 搭配,僅貼上格式和資料驗證。A1:D10 中的原始值保持不變。

要求通訊協定如下所示。

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "copyPaste": {
        "source": {
          "sheetId": SHEET_ID,
          "startRowIndex": 0,
          "endRowIndex": 10,
          "startColumnIndex": 0,
          "endColumnIndex": 4
        },
        "destination": {
          "sheetId": SHEET_ID,
          "startRowIndex": 0,
          "endRowIndex": 10,
          "startColumnIndex": 5,
          "endColumnIndex": 9
        },
        "pasteType": "PASTE_FORMAT",
        "pasteOrientation": "NORMAL"
      }
    }
  ]
}

剪下並貼上儲存格

以下 spreadsheets.batchUpdate 程式碼範例說明如何使用 CutPasteRequest。它會切割 A1:D10 範圍,並使用 PasteType 列舉與 PASTE_NORMAL 一起貼上其值、公式和格式,並合併至同一工作表中的 F1:I10 範圍。原始來源範圍儲存格內容已移除。

要求通訊協定如下所示。

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "cutPaste": {
        "source": {
          "sheetId": SHEET_ID,
          "startRowIndex": 0,
          "endRowIndex": 10,
          "startColumnIndex": 0,
          "endColumnIndex": 4
        },
        "destination": {
          "sheetId": SHEET_ID,
          "rowIndex": 0,
          "columnIndex": 5
        },
        "pasteType": "PASTE_NORMAL"
      }
    }
  ]
}

在範圍內重複公式

以下 spreadsheets.batchUpdate 程式碼範例說明如何使用 RepeatCellRequest 將公式 =FLOOR(A1*PI()) 複製到 B1:D10 範圍。公式的範圍會自動依據範圍內的每個資料列和資料欄遞增,從左上方儲存格開始。舉例來說,儲存格 B1 的公式為 =FLOOR(A1*PI()),而儲存格 D6 的公式為 =FLOOR(C6*PI())

要求通訊協定如下所示。

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "repeatCell": {
        "range": {
          "sheetId": SHEET_ID,
          "startRowIndex": 0,
          "endRowIndex": 10,
          "startColumnIndex": 1,
          "endColumnIndex": 4
        },
        "cell": {
          "userEnteredValue": {
              "formulaValue": "=FLOOR(A1*PI())"
          }
        },
        "fields": "userEnteredValue"
      }
    }
  ]
}

排序含有多個排序規格的範圍

下列 spreadsheets.batchUpdate 程式碼範例說明如何使用 SortRangeRequest 排序 A1:D10 範圍,首先依照 B 欄遞增順序排序,然後依照 C 欄遞減順序排序,最後依照 D 欄遞減順序排序。

要求通訊協定如下所示。

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "sortRange": {
        "range": {
          "sheetId": SHEET_ID,
          "startRowIndex": 0,
          "endRowIndex": 10,
          "startColumnIndex": 0,
          "endColumnIndex": 4
        },
        "sortSpecs": [
          {
            "dimensionIndex": 1,
            "sortOrder": "ASCENDING"
          },
          {
            "dimensionIndex": 2,
            "sortOrder": "DESCENDING"
          },
          {
            "dimensionIndex": 3,
            "sortOrder": "DESCENDING"
          }
        ]
      }
    }
  ]
}