資料作業

GoogleSheet API 可讓您以多種方式操控試算表中的資料。使用試算表 UI 的使用者可使用的大多數功能,也能透過 Sheets API 進行。本頁面的範例將說明如何使用試算表 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 範圍,並使用 PasteType 列舉和 PASTE_NORMAL,將值、公式、格式設定和合併結果貼到同一份工作表中。原始來源範圍儲存格內容會遭到移除。

要求通訊協定如下所示。

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