עיצוב מותנה

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

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

בדוגמאות האלה, ה-placeholders SPREADSHEET_ID ו-SHEET_ID מציינים איפה תציינו את המזהים האלה. המזהה של הגיליון האלקטרוני מופיע בכתובת ה-URL של הגיליון האלקטרוני. כדי לאתר את מזהה הגיליון אפשר להשתמש בשיטה spreadsheets.get. הטווחים מוגדרים באמצעות סימון A1. טווח לדוגמה הוא Sheet1!A1:D5.

הוספת הדרגתי של צבעים מותנים לאורך שורה

דוגמת קוד ה-method הבאה של 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, לכל ערך מעליה יש את הצבע המקסימלי:

הוספת תוצאת מתכון של פורמט הדרגתי

הוספת כלל של עיצוב מותנה לקבוצת טווחים

דוגמת קוד ה-method הבאה של 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
      }
    }
  ]
}

אחרי הבקשה, כלל הפורמט שהוחל מעדכן את הגיליון:

הוספת תוצאת מתכון של עיצוב מותנה

הוספת כללי עיצוב מותנה של תאריך וטקסט לטווח

דוגמת קוד ה-method הבאה של 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.9.2016:

תוצאת מתכון בפורמט מותנה של טקסט ותאריך

הוספת כלל עם נוסחה בהתאמה אישית לטווח

דוגמת קוד ה-method הבאה של 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
      }
    }
  ]
}

אחרי הבקשה, כלל הפורמט שהוחל מעדכן את הגיליון:

תוצאת מתכון של עיצוב מותנה מותאם אישית

מחיקת כלל של עיצוב מותנה

דוגמת קוד ה-method הבאה של 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
              }
            }
          }
        },
        ...
      ]
    }
  ]
}

עדכון כלל עיצוב מותנה או העדיפות שלו

הדוגמה הבאה של קוד ה-method 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
              }
            }
          }
        }
      }
    }
  ]
}