データ処理

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 を使用して「value > 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_NORMAL を含む PasteType 列挙型を使用して値、数式、書式を貼り付け、同じシート内の 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"
          }
        ]
      }
    }
  ]
}