Google ऐप्स स्क्रिप्ट, onChange, किसी परिवर्तनशील ऑब्जेक्ट को एक चर [डुप्लिकेट] में पारित नहीं कर सकता है

Dec 28 2020

यह पोस्ट बंद कर दी गई थी, लेकिन मुझे कहीं और एक तुलनीय समस्या का पता नहीं चल पाया है।

मैं एक स्क्रिप्ट पर काम करने की कोशिश कर रहा हूं जो एक ऑनचेंज () ट्रिगर से पंक्तियों को छिपाएगा। जब एक सेल "0" बन जाता है, तो मैं चाहता हूं कि वह पंक्ति छिपी हो। मेरी पहली पोस्ट की टिप्पणियों ने मुझे सिखाया है कि onChange से पारित वस्तु में एक सीमा नहीं है। क्या कोई समस्या है जो इस समस्या को हल करेगी?

मेरी स्प्रेडशीट में बैकएंड के लिए एक इनपुट शीट और फ्रंटएंड के लिए एक आउटपुट शीट है जो क्लाइंट को जाती है। मैं एक onChange ट्रिगर की जरूरत है, ताकि डेटा के रूप में ग्राहक के लिए ईमेल करने के लिए यह अच्छी तरह से स्वरूप के सामने जाता है। सबसे महत्वपूर्ण बात, मुझे छिपी रहने के लिए खाली ('0) पंक्तियों की आवश्यकता है।

मैं नया और बस सीखने वाला हूं, इसलिए मैंने जो लिखा है वह काम नहीं कर रहा है क्योंकि ऑनकॉन्ग ऑब्जेक्ट में एक सीमा शामिल नहीं है। धन्यवाद।

function onChange(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Client");
  var cell = e.range;
  var VALUE = cell.getValue(); 
  if(VALUE == 0){
        sheet.hideRow(cell);
  }
}

मैंने भी कोशिश की है:

function onChange(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Client");
  var cell = e.getValue(); 
  if(cell == 0){
        sheet.hideRow(cell);
  }
}

जवाब

Cooper Dec 28 2020 at 03:57

कोई सीमा मूल्य onChange ट्रिगर द्वारा नहीं लौटाया जाता है। यहां पर ईवेंट ऑब्जेक्ट कैसा दिखता है।

{"authMode":"FULL","changeType":"INSERT_ROW","source":{},"triggerUid":"","user": {"email":","nickname":""}}

आमतौर पर ध्यान रखें onChange को एक इंस्टॉल करने योग्य ट्रिगर की आवश्यकता होती है।

onChange इवेंट ऑब्जेक्ट

joshmeranda Dec 28 2020 at 04:00

ऐसा लगता है जैसे आपके पास ट्रिगर्स भ्रमित हैं। ट्रिगर पर सक्रिय होता है एक "बड़ा" या संरचनात्मक परिवर्तन होता है, बल्कि बदल मूल्यों पर की तुलना में। से डॉक्स :onChange onEditonChange

जब उपयोगकर्ता किसी स्प्रेडशीट की संरचना को संशोधित करता है, उदाहरण के लिए, एक नई शीट जोड़कर या एक कॉलम को हटाकर एक इंस्टॉल करने योग्य परिवर्तन ट्रिगर चलता है।

आप इवेंट ऑब्जेक्ट विनिर्देशों से देख सकते हैं कि प्रोग्रामर को onChangeट्रिगर से कोई मूल्य नहीं मिला है , और इसलिए जिस प्रकार की कार्यक्षमता आप देख रहे हैं वह आसानी से नहीं होती है।

आप onEditट्रिगर का उपयोग करना चाहते हैं जो आपके लिए देख रहे हैं के करीब कार्य करेगा। यह किसी भी मूल्य परिवर्तन पर आग लगाएगा और आपको नए और पुराने मूल्य देगा। onEditएक " सरल ट्रिगर " भी है, इसलिए आपके लिए अतिरिक्त ट्रिगर स्थापित करने की कोई आवश्यकता नहीं है onChange

onEditअपने कोड का उपयोग कुछ इस तरह होगा:

function onEdit(e) {
  val range = e.range;
  val sheet = SpreadsheetApp.getActiveSheet();

  if (e.value == 0) {
    var rowNum = e.range.getRow();
    sheet.hideRow(rowNum);
  }
}