Google शीट में, मैंने विभिन्न अक्षर कोड से संबंधित कुछ सशर्त स्वरूपण जोड़े हैं। यहाँ, A-D लाल हैं, E-F पीले हैं, और G और बाद में हरे हैं:

enter image description here

यह काम करता है कि मैं कैसे उम्मीद करता हूं और चाहता हूं।

ऐप्स स्क्रिप्ट के माध्यम से एक ही काम करने की कोशिश में, यह समर्थित प्रतीत नहीं होता है, क्योंकि UI की तुलना में सख्त प्रकार की जाँच होती है:

  SpreadsheetApp.newConditionalFormatRule()
    .whenNumberLessThanOrEqualTo('D')
    .setBackground('#ff0000')
    .setRanges([range])
    .build());

यह त्रुटि संदेश दिखाता है:

Cannot find method whenNumberLessThanOrEqualTo(string)

और इसलिए मैं इसे शीट पर लागू करने के लिए नियम वस्तु नहीं बना सकता।

क्या ऐप स्क्रिप्ट के माध्यम से यूआई में मैंने जो नियम बनाया है, वही नियम बनाने के तरीके हैं? या ऐसा करने के वैकल्पिक तरीके? सबसे अच्छा तरीका यह है कि इसे JS में फिर से लागू करें और अक्षर मानों की पूरी गणना पर TEXT_EQUAL_TO का उपयोग करें, या CUSTOM_FORMULA (docs)।

1
Kevin Robinson 10 सितंबर 2019, 21:03

1 उत्तर

सबसे बढ़िया उत्तर

दुर्भाग्य से, अंतर्निहित सेवा विधि whenNumberLessThanOrEqualTo() स्ट्रिंग के बजाय संख्यात्मक मानों को तर्क के रूप में अपेक्षित करती है।

हालांकि, आप इसके बजाय उन्नत पत्रक सेवाका लाभ उठा सकते हैं। उन्नत पत्रक सेवा मूल रूप से Google पत्रक REST API के लिए एक आवरण है। यह अधिक जटिल है और इसके लिए यह आवश्यक है कि आप कई REST संसाधन वस्तुओं को जानते हों (देखें संदर्भ दस्तावेज़) जो API की स्कीमा बनाते हैं।

इसके अलावा, इससे पहले कि आप इसका उपयोग कर सकें, आपको अपने GAS प्रोजेक्ट में शीट की API उन्नत सेवा को सक्षम करना होगा (उन्नत सेवा को सक्षम करने के तरीके पर दस्तावेज़ देखें)।

एक बार ऐसा करने के बाद, आप अपना स्वरूपण नियम जोड़ने के लिए सेवा का लाभ उठा सकते हैं।

निम्नलिखित स्क्रिप्ट एक उदाहरण है कि आप यह कैसे कर सकते हैं:

function buildRule() {
    var conditionValue = Sheets.newConditionValue();
    var booleanCondition = Sheets.newBooleanCondition();

    var color = Sheets.newColor();
    var cellFormat = Sheets.newCellFormat();

    var booleanRule = Sheets.newBooleanRule();
    var gridRange = Sheets.newGridRange();

    var formatRule = Sheets.newConditionalFormatRule();
    var addConditionalFormatRuleRequest = Sheets.newAddConditionalFormatRuleRequest();

    var request = Sheets.newRequest();

    var batchRequest = Sheets.newBatchUpdateSpreadsheetRequest();

    conditionValue.userEnteredValue = "D";

    booleanCondition.type = "NUMBER_GREATER_THAN_EQ";
    booleanCondition.values = [conditionValue];

    // #ff0000 in RGB format
    color.red = 1; // values range from 0 to 1
    color.blue = 0;
    color.green = 0;

    cellFormat.backgroundColor = color;

    booleanRule.condition = booleanCondition;
    booleanRule.format = cellFormat;

    // selects E2 as range
    gridRange.sheetId = 0;
    gridRange.startColumnIndex = 4;
    gridRange.endColumnIndex = 5;
    gridRange.startRowIndex = 1;
    gridRange.endRowIndex = 2;

    formatRule.booleanRule = booleanRule;
    formatRule.ranges = [gridRange];

    addConditionalFormatRuleRequest.rule = formatRule;
    addConditionalFormatRuleRequest.index = 0; // index of rule; increment to add other rules

    request.addConditionalFormatRule = addConditionalFormatRuleRequest;
    batchRequest.requests = [request];

    Sheets.Spreadsheets.batchUpdate(batchRequest, SpreadsheetApp.getActive().getId());
}


ऊपर दी गई स्क्रिप्ट काफी वर्बोज़ है, इसलिए एक बार जब आप Google शीट्स एपीआई स्कीमा के लिए संसाधन प्रकारों के बारे में अपना रास्ता जान लेते हैं, तो निम्नलिखित भी पर्याप्त होंगे:

function buildRule() {
    var batchRequest = {
       "requests":[
          {
             "addConditionalFormatRule":{
                "rule":{
                   "booleanRule":{
                      "condition":{
                         "type":"NUMBER_GREATER_THAN_EQ",
                         "values":[
                            {
                               "userEnteredValue":"D"
                            }
                         ]
                      },
                      "format":{
                         "backgroundColor":{
                            "red":1,
                            "blue":0,
                            "green":0
                         }
                      }
                   },
                   "ranges":[
                      {
                         "sheetId":0,
                         "startColumnIndex":4,
                         "endColumnIndex":5,
                         "startRowIndex":1,
                         "endRowIndex":2
                      }
                   ]
                },
                "index":0
             }
          }
       ]
    };

    Sheets.Spreadsheets.batchUpdate(batchRequest, SpreadsheetApp.getActive().getId());
}
2
TheAddonDepot 10 सितंबर 2019, 19:40