条件付き書式

Google Sheets API を使用すると、条件付き書式ルールを作成、更新できます。 可能です。特定の書式タイプ(太字、斜体、取り消し線、 (前景色、背景色など)を条件付きで制御できる 適用できます。このページの例では、一般的な Sheets API の条件付き書式オペレーションについて説明します。

これらの例では、言語に依存しない HTTP リクエストとして記載しています。学習内容 Google API を使用してさまざまな言語でバッチ アップデートを実装する方法 クライアント ライブラリについては、 スプレッドシート

これらの例では、プレースホルダ SPREADSHEET_IDSHEET_ID は、 は、これらの ID を指定する場所を示しています。そのスプレッドシートの ID を入力します。取得できるもの: シート ID spreadsheets.get メソッドを使用します。「 範囲は A1 表記で指定します。「 Sheet1!A1:D5 です。

行全体に条件付きカラー グラデーションを追加する

次の spreadsheets.batchUpdate メソッドコードサンプルは、 AddConditionalFormatRuleRequest 新しいグラデーションの条件付き書式ルールを、 できます。1 つ目のルールは、その行のセルに背景色を付けることです。 値に応じて設定されます。行の最小値は濃い赤 最大値は明るい緑色になります他の値の色 補間されます2 番目のルールも同じことをしますが、特定の数値を使用します。 グラデーションのエンドポイント(およびさまざまな色)の決定このリクエストでは sheets.InterpolationPointType type として指定します。

リクエスト プロトコルを以下に示します。

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 の最大値が 256 に設定されており、それを超える値には最大値があります。 color:

グラデーション形式のレシピの結果を追加

一連の範囲に条件付き書式ルールを追加する

次の spreadsheets.batchUpdate メソッドコードサンプルは、 AddConditionalFormatRuleRequest を使用すると、スプレッドシートの A 列と C 列に新しい条件付き書式ルールを設定できます。 このルールでは、値が 10 以下のセルには背景が付きます 濃い赤色に変わっていますこのルールはインデックス 0 に挿入されているため、 他の書式ルールより優先されます。このリクエストでは ConditionTypetype として BooleanRule

リクエスト プロトコルを以下に示します。

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 の範囲に対して新しい条件付き書式ルールを設定する これらのセル内の日付とテキストの値に基づきます。テキストに文字列または 費用(大文字と小文字を区別しない)場合、最初のルールによってセルのテキストを太字に設定されます。もし 過去 1 週間より前の日付がセルに含まれている場合、2 番目のルールは セルのテキストは斜体になり青色になります。このリクエストでは ConditionTypetype として BooleanRule

リクエスト プロトコルを以下に示します。

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 より大きい場合、セルのテキストは 太字と斜体にします。このリクエストでは ConditionTypetype として BooleanRule

リクエスト プロトコルを以下に示します。

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 指定したシートのインデックス 0 を持つ条件付き書式ルールを削除する 作成者: SHEET_ID

リクエスト プロトコルを以下に示します。

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 あります。特定のレスポンス フィールドがデフォルト値に設定されている場合、このフィールドは省略されます。 取得できます。このリクエストでは ConditionTypetype として BooleanRule

{
  "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 の条件付き書式ルールが新しいルールに置き換えられます に指定されたテキスト("Total Cost")を含むセルの書式設定 A1:D5 の範囲。最初のリクエストの移動は 2 番目のリクエストの移動が完了するため、 2 番目のリクエストにより、インデックス 1 にあったルールが置き換えられます。「 リクエストには ConditionTypetype として BooleanRule

リクエスト プロトコルを以下に示します。

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
              }
            }
          }
        }
      }
    }
  ]
}