データ処理

Google Sheets API を使用すると、スプレッドシート内のデータをさまざまな方法で操作できます。ユーザーがスプレッドシート UI を操作して使用できるほとんどの機能は、スプレッドシート API でも使用できます。このページの例は、Sheets API を使用して一般的なスプレッドシート操作を実行する方法を示しています。

これらの例では、特定の言語に依存しない HTTP リクエストの形式を採用しています。Google API クライアント ライブラリを使用してバッチ アップデートをさまざまな言語で実装する方法については、スプレッドシートを更新するをご覧ください。

以下の例では、SPREADSHEET_IDSHEET_ID というプレースホルダを使用して、これらの ID をどこで指定するかを示しています。スプレッドシート ID はスプレッドシートの URL で確認できます。シート ID は、spreadsheets.get メソッドを使用して取得できます。範囲は 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 に貼り付ける方法を示しています。このメソッドは、PASTE_FORMATPasteType 列挙型を使用して、書式設定とデータ検証のみを貼り付けます。範囲 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"
          }
        ]
      }
    }
  ]
}