قالب بندی مشروط

Google Sheets API به شما امکان می دهد قوانین قالب بندی شرطی را در صفحات گسترده ایجاد و به روز کنید. فقط انواع خاصی از قالب بندی (پررنگ، مورب، خط خطی، رنگ پیش زمینه و رنگ پس زمینه) را می توان از طریق قالب بندی شرطی کنترل کرد. مثال‌های موجود در این صفحه نحوه دستیابی به عملیات قالب‌بندی مشروط معمول با Sheets API را نشان می‌دهند.

این نمونه ها به عنوان درخواست های HTTP برای خنثی بودن زبان ارائه می شوند. برای یادگیری نحوه اجرای یک به‌روزرسانی دسته‌ای به زبان‌های مختلف با استفاده از کتابخانه‌های سرویس گیرنده Google API، به به‌روزرسانی صفحات گسترده مراجعه کنید.

در این مثال‌ها، متغیرهای SPREADSHEET_ID و SHEET_ID نشان می‌دهند که کجا آن شناسه‌ها را ارائه می‌کنید. می‌توانید شناسه صفحه‌گسترده را در URL صفحه‌گسترده پیدا کنید. با استفاده از روش spreadsheets.get می توانید شناسه برگه را دریافت کنید. محدوده ها با استفاده از نماد A1 مشخص می شوند. محدوده نمونه Sheet1!A1:D5 است.

یک گرادیان رنگ مشروط در یک ردیف اضافه کنید

نمونه کد روش spreadsheets.batchUpdate زیر نحوه استفاده از AddConditionalFormatRuleRequest را برای ایجاد قوانین قالب‌بندی شرطی گرادیان جدید برای ردیف‌های 10 و 11 یک برگه نشان می‌دهد. قانون اول بیان می‌کند که سلول‌های آن ردیف دارای رنگ‌های پس‌زمینه با توجه به مقدارشان هستند. کمترین مقدار در ردیف به رنگ قرمز تیره است، در حالی که بالاترین مقدار به رنگ سبز روشن است. رنگ سایر مقادیر درون یابی می شود. قانون دوم نیز همین کار را می کند، اما با مقادیر عددی خاص که نقاط انتهایی گرادیان (و رنگ های مختلف) را تعیین می کند. درخواست از 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 تنظیم شده است، هر مقدار بالاتر از آن دارای رنگ حداکثر است:

نتیجه دستور پخت با فرمت گرادیان را اضافه کنید

یک قانون قالب بندی شرطی را به مجموعه ای از محدوده ها اضافه کنید

نمونه کد روش spreadsheets.batchUpdate زیر نحوه استفاده از AddConditionalFormatRuleRequest را برای ایجاد یک قانون قالب بندی مشروط جدید برای ستون های A و C یک برگه نشان می دهد. این قانون بیان می کند که سلول هایی با مقادیر 10 یا کمتر رنگ پس زمینه آنها به قرمز تیره تغییر می کند. این قانون در شاخص 0 درج می شود، بنابراین نسبت به سایر قوانین قالب بندی اولویت دارد. درخواست از ConditionType به عنوان type 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 در یک برگه بر اساس تاریخ و مقادیر متن در آن سلول ها نشان می دهد. اگر متن حاوی رشته "هزینه" (بدون حساس به حروف بزرگ) باشد، قانون اول متن سلول را به صورت پررنگ تنظیم می کند. اگر سلول حاوی تاریخی باشد که قبل از هفته گذشته رخ داده است، قانون دوم متن سلول را به صورت مورب تنظیم می کند و آن را آبی رنگ می کند. درخواست از ConditionType به عنوان type 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 باشد، متن سلول روی پررنگ و مورب تنظیم می‌شود. درخواست از ConditionType به عنوان type 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 دارند. اگر یک فیلد پاسخ داده شده روی مقدار پیش فرض تنظیم شود، از پاسخ حذف می شود. درخواست از ConditionType به عنوان type 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 ، کاهش اولویت آن) منتقل می کند. درخواست دوم، قانون قالب‌بندی شرطی در شاخص 0 را با قانون جدیدی جایگزین می‌کند که سلول‌های حاوی متن دقیق مشخص شده ("هزینه کل") را در محدوده A1:D5 قالب‌بندی می‌کند. حرکت درخواست اول قبل از شروع درخواست دوم تکمیل می شود، بنابراین درخواست دوم جایگزین قاعده ای است که در ابتدا در شاخص 1 بود. درخواست از ConditionType به عنوان type 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
              }
            }
          }
        }
      }
    }
  ]
}