التنسيق المشروط

تتيح لك واجهة برمجة تطبيقات Google Sheets إنشاء قواعد التنسيق الشرطي وتحديثها في جداول البيانات. لا يمكن التحكم إلا في أنواع تنسيق معينة (الغامق والمائل والمشطوب ولون المقدمة ولون الخلفية) من خلال التنسيق الشرطي. توضح الأمثلة الموجودة في هذه الصفحة كيفية تنفيذ عمليات التنسيق الشرطي الشائعة باستخدام 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، فإن أي قيم فوقه تحتوي على لون maxpoint:

إضافة نتيجة وصفة تنسيق متدرج

إضافة قاعدة تنسيق شرطي إلى مجموعة من النطاقات

يوضّح نموذج رمز طريقة 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
      }
    }
  ]
}

بعد الطلب، تعدِّل قاعدة التنسيق المطبَّقة جدول البيانات. في هذا المثال، التاريخ الحالي هو 26/9/2016:

نتيجة وصفة التنسيق الشرطي للنص والتاريخ

إضافة قاعدة صيغة مخصّصة إلى نطاق

يوضّح نموذج رمز طريقة 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
              }
            }
          }
        }
      }
    }
  ]
}