Google Sheets API を使用すると、スプレッドシート内の条件付き書式ルールを作成、更新できます。条件付き書式を使用して制御できるのは、特定の書式タイプ(太字、斜体、取り消し線、前景色、背景色)のみです。このページの例では、Sheets API を使用して一般的な条件付き書式設定オペレーションを行う方法を示します。
これらの例は、言語に依存しない HTTP リクエストとして示されています。Google API クライアント ライブラリを使用して、さまざまな言語でバッチ更新を実装する方法については、スプレッドシートを更新するをご覧ください。
以下の例では、SPREADSHEET_ID と SHEET_ID というプレースホルダを使用して、これらの ID をどこで指定するかを示しています。スプレッドシート ID はスプレッドシートの URL で確認できます。シート ID は、spreadsheets.get
メソッドを使用して取得できます。範囲は A1 表記を使用して指定します。範囲の例は Sheet1!A1:D5 です。
行全体に条件付きのカラー グラデーションを追加する
次の spreadsheets.batchUpdate
メソッドのコードサンプルは、AddConditionalFormatRuleRequest
を使用して、シートの行 10 と 11 に新しいグラデーション条件付き書式ルールを設定する方法を示しています。最初のルールは、その行のセルに対して、値に応じて背景色が設定されることを指定しています。行の最小値は濃い赤色で、最大値は明るい緑色で表示されます。他の値の色は補間されます。2 つ目のルールも同じですが、グラデーションの終点(と異なる色)を特定の数値で指定しています。このリクエストでは、type
として sheets.InterpolationPointType
を使用しています。
リクエスト プロトコルは次のとおりです。
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{ "requests": [ { "addConditionalFormatRule": { "rule": { "ranges": [ { "sheetId": SHEET_ID, "startRowIndex": 9, "endRowIndex": 10, } ], "gradientRule": { "minpoint": { "color": { "green": 0.2, "red": 0.8 }, "type": "MIN" }, "maxpoint": { "color": { "green": 0.9 }, "type": "MAX" }, } }, "index": 0 } }, { "addConditionalFormatRule": { "rule": { "ranges": [ { "sheetId": SHEET_ID, "startRowIndex": 10, "endRowIndex": 11, } ], "gradientRule": { "minpoint": { "color": { "green": 0.8, "red": 0.8 }, "type": "NUMBER", "value": "0" }, "maxpoint": { "color": { "blue": 0.9, "green": 0.5, "red": 0.5 }, "type": "NUMBER", "value": "256" }, } }, "index": 1 } }, ] }
リクエスト後、適用された書式設定ルールによってシートが更新されます。行 11 のグラデーションの maxpoint が 256
に設定されているため、それより大きい値には maxpoint の色が適用されます。
範囲のセットに対して条件付き書式ルールを追加する
次の spreadsheets.batchUpdate
メソッドのコードサンプルは、AddConditionalFormatRuleRequest
を使用して、シートの列 A と C に新しい条件付き書式設定ルールを設定する方法を示しています。このルールでは、値が 10 以下のセルの背景色が濃い赤色に変更されます。このルールはインデックス 0 に挿入されるため、他の書式設定ルールよりも優先されます。このリクエストでは、BooleanRule
の type
として ConditionType
を使用しています。
リクエスト プロトコルは次のとおりです。
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{ "requests": [ { "addConditionalFormatRule": { "rule": { "ranges": [ { "sheetId": SHEET_ID, "startColumnIndex": 0, "endColumnIndex": 1, }, { "sheetId": SHEET_ID, "startColumnIndex": 2, "endColumnIndex": 3, }, ], "booleanRule": { "condition": { "type": "NUMBER_LESS_THAN_EQ", "values": [ { "userEnteredValue": "10" } ] }, "format": { "backgroundColor": { "green": 0.2, "red": 0.8, } } } }, "index": 0 } } ] }
リクエスト後、適用された形式ルールによってシートが更新されます。
範囲に日付とテキストの条件付き書式ルールを追加する
次の spreadsheets.batchUpdate
メソッドのコードサンプルは、AddConditionalFormatRuleRequest
を使用して、セルの日付とテキスト値に基づいて、シートの A1 ~ D5 の範囲に新しい条件付き書式ルールを設定する方法を示しています。テキストに「Cost」という文字列が含まれている場合(大文字と小文字は区別されません)、最初のルールにより、セルのテキストが太字になります。セルに過去 1 週間より前の日付が含まれている場合、2 番目のルールにより、セルのテキストが斜体で青色になります。このリクエストでは、BooleanRule
の type
として ConditionType
を使用しています。
リクエスト プロトコルは次のとおりです。
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{ "requests": [ { "addConditionalFormatRule": { "rule": { "ranges": [ { "sheetId": SHEET_ID, "startRowIndex": 0, "endRowIndex": 5, "startColumnIndex": 0, "endColumnIndex": 4, } ], "booleanRule": { "condition": { "type": "TEXT_CONTAINS", "values": [ { "userEnteredValue": "Cost" } ] }, "format": { "textFormat": { "bold": true } } } }, "index": 0 } }, { "addConditionalFormatRule": { "rule": { "ranges": [ { "sheetId": SHEET_ID, "startRowIndex": 0, "endRowIndex": 5, "startColumnIndex": 0, "endColumnIndex": 4, } ], "booleanRule": { "condition": { "type": "DATE_BEFORE", "values": [ { "relativeDate": "PAST_WEEK" } ] }, "format": { "textFormat": { "italic": true, "foregroundColor": { "blue": 1 } } } } }, "index": 1 } } ] }
リクエスト後、適用された形式ルールによってシートが更新されます。この例では、現在の日付は 2016 年 9 月 26 日です。
範囲にカスタム数式ルールを追加する
次の spreadsheets.batchUpdate
メソッドのコードサンプルは、AddConditionalFormatRuleRequest
を使用して、カスタム数式に基づいてシート内の範囲 B5:B8 に新しい条件付き書式ルールを設定する方法を示しています。このルールは、列 A と列 B のセルの積を計算します。積が 120 より大きい場合、セルのテキストは太字と斜体に設定されます。このリクエストでは、BooleanRule
の type
として ConditionType
を使用しています。
リクエスト プロトコルは次のとおりです。
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{ "requests": [ { "addConditionalFormatRule": { "rule": { "ranges": [ { "sheetId": SHEET_ID, "startColumnIndex": 2, "endColumnIndex": 3, "startRowIndex": 4, "endRowIndex": 8 } ], "booleanRule": { "condition": { "type": "CUSTOM_FORMULA", "values": [ { "userEnteredValue": "=GT(A5*B5,120)" } ] }, "format": { "textFormat": { "bold": true, "italic": true } } } }, "index": 0 } } ] }
リクエスト後、適用された形式ルールによってシートが更新されます。
条件付き書式ルールを削除する
次の spreadsheets.batchUpdate
メソッドのコードサンプルは、DeleteConditionalFormatRuleRequest
を使用して、SHEET_ID で指定されたシートのインデックス 0
の条件付き書式設定ルールを削除する方法を示しています。
リクエスト プロトコルは次のとおりです。
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{ "requests": [ { "deleteConditionalFormatRule": { "sheetId": SHEET_ID, "index": 0 } } ] }
条件付き書式ルールのリストを読み取る
次の spreadsheets.get
メソッドのコードサンプルは、スプレッドシート内の各シートのタイトル、SHEET_ID、すべての条件付き書式設定ルールのリストを取得する方法を示しています。fields
クエリ パラメータは、返されるデータを決定します。
リクエスト プロトコルは次のとおりです。
GET https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID?fields=sheets(properties(title,sheetId),conditionalFormats)
レスポンスは Spreadsheet
リソースで構成され、Sheet
オブジェクトの配列が含まれます。各オブジェクトには、SheetProperties
要素と ConditionalFormatRule
要素の配列が含まれています。特定のレスポンス フィールドがデフォルト値に設定されている場合、そのフィールドはレスポンスから除外されます。このリクエストでは、BooleanRule
の type
として ConditionType
を使用しています。
{ "sheets": [ { "properties": { "sheetId": 0, "title": "Sheet1" }, "conditionalFormats": [ { "ranges": [ { "startRowIndex": 4, "endRowIndex": 8, "startColumnIndex": 2, "endColumnIndex": 3 } ], "booleanRule": { "condition": { "type": "CUSTOM_FORMULA", "values": [ { "userEnteredValue": "=GT(A5*B5,120)" } ] }, "format": { "textFormat": { "bold": true, "italic": true } } } }, { "ranges": [ { "startRowIndex": 0, "endRowIndex": 5, "startColumnIndex": 0, "endColumnIndex": 4 } ], "booleanRule": { "condition": { "type": "DATE_BEFORE", "values": [ { "relativeDate": "PAST_WEEK" } ] }, "format": { "textFormat": { "foregroundColor": { "blue": 1 }, "italic": true } } } }, ... ] } ] }
条件付き書式ルールまたはその優先度を更新する
次の spreadsheets.batchUpdate
メソッドのコードサンプルは、複数のリクエストで UpdateConditionalFormatRuleRequest
を使用する方法を示しています。最初のリクエストは、既存の条件付き書式ルールをより高いインデックス(0
から 2
に優先度を下げて)に移動します。2 番目のリクエストは、インデックス 0
の条件付き書式設定ルールを、A1:D5 範囲で指定されたテキスト(「合計費用」)を含むセルをフォーマットする新しいルールに置き換えます。最初のリクエストの移動は 2 番目のリクエストが開始する前に完了するため、2 番目のリクエストは、元々インデックス 1
にあったルールを置き換えます。このリクエストでは、BooleanRule
の type
として ConditionType
を使用しています。
リクエスト プロトコルは次のとおりです。
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{ "requests": [ { "updateConditionalFormatRule": { "sheetId": SHEET_ID, "index": 0, "newIndex": 2 }, "updateConditionalFormatRule": { "sheetId": SHEET_ID, "index": 0, "rule": { "ranges": [ { "sheetId": SHEET_ID, "startRowIndex": 0, "endRowIndex": 5, "startColumnIndex": 0, "endColumnIndex": 4, } ], "booleanRule": { "condition": { "type": "TEXT_EQ", "values": [ { "userEnteredValue": "Total Cost" } ] }, "format": { "textFormat": { "bold": true } } } } } } ] }