Google Sheets API を使用すると、スプレッドシート内のセルおよび範囲の書式設定を更新できます。このページの例では、Sheets API を使用して一般的な書式設定オペレーションを実行する方法を示します。条件付き書式のその他の例については、条件付き書式のレシピページをご覧ください。
スプレッドシートの更新時に、リクエストの種類によってはレスポンスが返されることがあります。これらは配列として返され、各レスポンスは対応するリクエストと同じインデックスを占有します。一部のリクエストにはレスポンスがなく、そのようなリクエストについてはレスポンスが空です。これらの例のレスポンスの構造は、spreadsheets.batchUpdate
で確認できます。
これらの例では、言語に依存しない HTTP リクエストの形式で示しています。Google API クライアント ライブラリを使用してさまざまな言語でバッチ アップデートを実装する方法については、スプレッドシートを更新するをご覧ください。
これらの例では、プレースホルダ SPREADSHEET_ID と SHEET_ID は、これらの ID を指定する場所を示しています。スプレッドシート ID はスプレッドシートの URL で確認できます。シート ID は、spreadsheets.get
メソッドを使用して取得できます。範囲は A1 表記で指定します。範囲の例は Sheet1!A1:D5 です。
上の動画では、固定行の作成、セルの太字表示、通貨の書式設定、セルの検証の実行、セルの値の制限など、さまざまな方法でスプレッドシートのセルの書式設定を行う方法を学びました。
セルの枠線を編集
次の spreadsheets.batchUpdate
コードサンプルは、UpdateBordersRequest
を使用して、A1:F10 範囲の各セルに青い破線の上と下の枠線を付ける方法を示しています。innerHorizontal
フィールドでは、範囲の内側に水平の枠線が作成されます。このフィールドを省略すると、範囲全体の上下にのみ枠線が追加されます。
リクエスト プロトコルを以下に示します。
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 番目のリクエストは、ヘッダー行が固定されるようにシート プロパティを調整します。
リクエスト プロトコルを以下に示します。
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 が 1 つのセルに結合されます。2 番目のリクエストは、行は分離されたまま、A3:B6 の列を結合します。
リクエスト プロトコルを以下に示します。
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 桁とし、先頭の 0 を 1 つを除いてすべて削除することを意味します。たとえば、数値「3.14」は「3.1400」とレンダリングされ、「12345.12345」は「12,345.1235」とレンダリングされます。
リクエスト プロトコルを以下に示します。
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" } } ] }