データ処理

Google Sheets API を使用すると、スプレッドシート内のデータをさまざまな方法で操作できます。スプレッドシート UI で利用できる機能のほとんどは、Sheets 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"
          }
        ]
      }
    }
  ]
}