עיצוב מותנה

באמצעות Google Sheets API אפשר ליצור ולעדכן את כללי העיצוב המותנה בגיליונות אלקטרוניים. אפשר לשלוט רק בסוגים מסוימים של עיצוב (מודגש, נטוי, קו חוצה, צבע חזית וצבע רקע) באמצעות עיצוב מותנה. הדוגמאות בדף הזה ממחישות איך לבצע פעולות נפוצות של עיצוב מותנה באמצעות Sheets API.

הדוגמאות האלה מוצגות כבקשות HTTP כדי שיהיו ניטרליות מבחינת שפה. במאמר עדכון גיליונות אלקטרוניים מוסבר איך מטמיעים עדכון באצווה בשפות שונות באמצעות ספריות הלקוח של Google API.

בדוגמאות האלה, placeholders‏ SPREADSHEET_ID ו-SHEET_ID מציינים איפה צריך לספק את המזהים האלה. המזהה של הגיליון האלקטרוני מופיע בכתובת ה-URL של הגיליון האלקטרוני. אפשר לקבל את מזהה הגיליונות באמצעות ה-method‏ 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 ומטה ישתנה לאדום כהה. הכלל מוכנס ב-index 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 בגיליון, על סמך ערכי תאריכים וטקסט בתאים האלה. אם הטקסט מכיל את המחרוזת Cost (ללא קשר לאותיות רישיות), הכלל הראשון מגדיר את טקסט התא כמודגש. אם התא מכיל תאריך שהתרחש לפני השבוע האחרון, הכלל השני מגדיר את הטקסט בתא כנטוי וצובע אותו בכחול. הבקשה משתמשת ב-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 בספטמבר 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 בכלל חדש שמעצב תאים שמכילים את הטקסט המדויק שצוין ('Total Cost') בטווח A1:D5. ההעברה של הבקשה הראשונה מסתיימת לפני שהבקשה השנייה מתחילה, ולכן הבקשה השנייה מחליפה את הכלל שהיה במקור ב-index‏ 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
              }
            }
          }
        }
      }
    }
  ]
}