基本的な書式設定

Google Sheets API を使用すると、スプレッドシート内のセルや範囲の表示形式を更新できます。このページの例は、Sheets API を使用して一般的な書式設定操作を行う方法を示しています。条件付き書式のその他の例については、条件付き書式のレシピ ページをご覧ください。

スプレッドシートを更新すると、一部のリクエストはレスポンスを返します。これらのレスポンスは配列で返されます。各レスポンスは対応するリクエストと同じインデックスを使用します。リクエストによってはレスポンスがない場合があり、その場合はレスポンスが空になります。これらの例のレスポンス構造は spreadsheets.batchUpdate にあります。

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

以下の例では、SPREADSHEET_IDSHEET_ID というプレースホルダを使用して、これらの ID をどこで指定するかを示しています。スプレッドシート ID はスプレッドシートの URL で確認できます。シート ID は、spreadsheets.get メソッドを使用して取得できます。範囲は A1 表記を使用して指定します。範囲の例は Sheet1!A1:D5 です。

上の動画では、行の固定、セルの太字表示、通貨形式の適用、セルの検証、セルの値の制限など、スプレッドシートのさまざまな形式設定方法を紹介しています。

セルの枠線を編集する

次の spreadsheets.batchUpdate コードサンプルは、UpdateBordersRequest を使用して、範囲 A1:F10 の各セルの上と下に青色の破線の罫線を追加する方法を示しています。innerHorizontal フィールドは、範囲の内側に横罫線を作成します。このフィールドを省略すると、範囲全体の上と下のみに罫線が追加されます。

3 × 3 の表で、各セルの上と下に青色の破線の罫線があります。
図 1. シート内の各セルの上部と下部に青色の破線の罫線を設定します。

リクエスト プロトコルは次のようになります。

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "updateBorders": {
        "range": {
          "sheetId": SHEET_ID,
          "startRowIndex": 0,
          "endRowIndex": 10,
          "startColumnIndex": 0,
          "endColumnIndex": 6
        },
        "top": {
          "style": "DASHED",
          "width": 1,
          "color": {
            "blue": 1.0
          },
        },
        "bottom": {
          "style": "DASHED",
          "width": 1,
          "color": {
            "blue": 1.0
          },
        },
        "innerHorizontal": {
          "style": "DASHED",
          "width": 1,
          "color": {
            "blue": 1.0
          },
        },
      }
    }
  ]
}

ヘッダー行を書式設定する

次の spreadsheets.batchUpdate コードサンプルは、RepeatCellRequest を使用してシートのヘッダー行をフォーマットする方法を示しています。最初のリクエストはテキストの色、背景色、テキストのフォントサイズ、テキストの位置揃えを更新し、テキストを太字にします。range フィールドで列インデックスを省略すると、行全体が書式設定されます。2 番目のリクエストは、ヘッダー行が固定されるようにシートのプロパティを調整します。

シートに書式設定されたヘッダー行がある 3 × 3 の表。
図 2. シートのヘッダー行を書式設定します。

リクエスト プロトコルは次のようになります。

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "repeatCell": {
        "range": {
          "sheetId": SHEET_ID,
          "startRowIndex": 0,
          "endRowIndex": 1
        },
        "cell": {
          "userEnteredFormat": {
            "backgroundColor": {
              "red": 0.0,
              "green": 0.0,
              "blue": 0.0
            },
            "horizontalAlignment" : "CENTER",
            "textFormat": {
              "foregroundColor": {
                "red": 1.0,
                "green": 1.0,
                "blue": 1.0
              },
              "fontSize": 12,
              "bold": true
            }
          }
        },
        "fields": "userEnteredFormat(backgroundColor,textFormat,horizontalAlignment)"
      }
    },
    {
      "updateSheetProperties": {
        "properties": {
          "sheetId": SHEET_ID,
          "gridProperties": {
            "frozenRowCount": 1
          }
        },
        "fields": "gridProperties.frozenRowCount"
      }
    }
  ]
}

セルを結合

次の spreadsheets.batchUpdate コードサンプルは、MergeCellsRequest を使用してセルを結合する方法を示しています。最初のリクエストは、範囲 A1:B2 を単一のセルに結合します。2 番目のリクエストは、範囲 A3:B6 の列を結合しますが、行は結合せずにそのままにします。

シート内の結合セルを含む 3 × 3 の表。
図 3. シート内のセルを結合します。

リクエスト プロトコルは次のようになります。

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "mergeCells": {
        "range": {
          "sheetId": SHEET_ID,
          "startRowIndex": 0,
          "endRowIndex": 2,
          "startColumnIndex": 0,
          "endColumnIndex": 2
        },
        "mergeType": "MERGE_ALL"
      }
    },
    {
      "mergeCells": {
        "range": {
          "sheetId": SHEET_ID,
          "startRowIndex": 2,
          "endRowIndex": 6,
          "startColumnIndex": 0,
          "endColumnIndex": 2
        },
        "mergeType": "MERGE_COLUMNS"
      }
    },
  ]
}

範囲に対してカスタムの日時または数値の表示形式を設定する

次の spreadsheets.batchUpdate コードサンプルは、RepeatCellRequest を使用してセルを更新し、カスタムの日時と数値の表示形式を設定する方法を示しています。最初のリクエストは、範囲 A1:A10 のセルにカスタムの日時の表示形式 hh:mm:ss am/pm, ddd mmm dd yyyy を設定します。この形式の日時の例は、「02:05:07 PM, Sun Apr 03 2016」です。

2 番目のリクエストは、範囲 B1:B10 のセルにカスタムの数値の表示形式 #,##0.0000 を設定します。この表示形式は、数値をコンマ区切りでグループ化して、小数点の後に 4 桁の数値を配置し、1 つの先行ゼロを除いてすべてをドロップするように指定しています。たとえば、数値「3.14」は「3.1400」にレンダリングされ、数値「12345.12345」は「12,345.1235」にレンダリングされます。

シートにカスタムの日時と数値の表示形式が設定された 3 × 3 の表。
図 4. シート内のセルを更新して、カスタムの日時と数値の表示形式を設定します。

リクエスト プロトコルは次のようになります。

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "repeatCell": {
        "range": {
          "sheetId": SHEET_ID,
          "startRowIndex": 0,
          "endRowIndex": 10,
          "startColumnIndex": 0,
          "endColumnIndex": 1
        },
        "cell": {
          "userEnteredFormat": {
            "numberFormat": {
              "type": "DATE",
              "pattern": "hh:mm:ss am/pm, ddd mmm dd yyyy"
            }
          }
        },
        "fields": "userEnteredFormat.numberFormat"
      }
    },
    {
      "repeatCell": {
        "range": {
          "sheetId": SHEET_ID,
          "startRowIndex": 0,
          "endRowIndex": 10,
          "startColumnIndex": 1,
          "endColumnIndex": 2
        },
        "cell": {
          "userEnteredFormat": {
            "numberFormat": {
              "type": "NUMBER",
              "pattern": "#,##0.0000"
            }
          }
        },
        "fields": "userEnteredFormat.numberFormat"
      }
    }
  ]
}