資料作業

Google Sheets API 可讓您透過多種方式操控試算表中的資料。大多數試算表 UI 使用者可用的功能,都可以透過 Sheets API 執行。本頁面的範例將說明如何使用 Sheets API 完成一些常見的試算表作業。

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

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

將資料驗證套用至特定範圍

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

要求通訊協定如下所示。

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,並使用具有 PASTE_NORMALPasteType 列舉將值、公式、格式化,以及合併到同一工作表的 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"
          }
        ]
      }
    }
  ]
}