मैं गूगल ऐप की स्क्रिप्ट के लिए नया हूँ। यह मेरी नमूना स्प्रेडशीट है। एक स्क्रिप्ट जहां एक चेकबॉक्स कॉलम (मीट्रिक/शाही इकाइयों) के प्रारूप को टॉगल करता है। यह केवल पहले मामले के लिए काम करता है, दूसरे के लिए नहीं। मुझे यकीन नहीं है कि क्यों (e.value == true/false) काम नहीं कर रहा है।

function onEdit (e) {
  var Name = SpreadsheetApp.getActiveSheet().getName();
  Logger.log(Name)
  if (e.range.getA1Notation() === 'C19' && e.value == 'TRUE') {
    SpreadsheetApp.getActiveSheet().getRange("K2:K89").setNumberFormat("0.00oz")
  }
    else if (e.range.getA1Notation() === 'C19' && e.value == 'FALSE'){
      SpreadsheetApp.getActiveSheet().getRange("K2:K89").setNumberFormat("0.00g")
    }}
0
Leon Chen 11 अक्टूबर 2018, 19:57

1 उत्तर

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

यहां एक कोड खंड है जो चेकबॉक्स इनपुट के आधार पर कॉलम के प्रारूप को बदलने के लिए काम करेगा:

  if (e.range.getA1Notation() == 'C19')
  { 
      if (e.value == 'TRUE') { 
          SpreadsheetApp.getActiveSheet().getRange("K2:K59").setNumberFormat("000.00lb");
      }
      else
     {
          SpreadsheetApp.getActiveSheet().getRange("K2:K59").setNumberFormat("000.00oz");
     }
  }

  if (e.range.getA1Notation() == 'C18'){

    if (e.value == 'TRUE') {
      SpreadsheetApp.getActiveSheet().getRange("L2:L59").setNumberFormat("##0.00gr");
    }
    else
    {
      SpreadsheetApp.getActiveSheet().getRange("L2:L59").setNumberFormat('##0.00"%"');
    }
  }

यह कॉलम K और L के प्रारूप को बदलने की अनुमति देता है। यह केवल दृष्टांत उद्देश्यों के लिए है और आपको मीट्रिक/शाही भार आदि की पुनर्गणना करने की भी आवश्यकता है।

मुझे लगता है कि आपके पास मुख्य समस्या यह है कि (e.value == true) (e.value == 'TRUE') होना चाहिए।

साथ ही आपको SpreadsheetApp.getActiveSpreadSheet() के बजाय SpreadsheetApp.getActiveSheet() का उपयोग करने की आवश्यकता हो सकती है।

नोट: प्रयोग से मैंने पाया कि चेक बॉक्स द्वारा लौटाया गया मान स्ट्रिंग 'TRUE' और 'FALSE' लगता है न कि बूलियन मान। तो if(e.value) बूलियन true आदि के परीक्षण के लिए काम नहीं करता जैसा आप उम्मीद करेंगे। मैं इस पर उच्च अधिकारियों द्वारा सुधार के लिए तैयार हूं, लेकिन (e.value == 'TRUE') फॉर्म ही एकमात्र ऐसा था जिससे मैं काम कर सकता था।

1
bcperth 12 अक्टूबर 2018, 05:43