मैं एक आवर्ती आधार पर एक स्वचालित ईमेल भेजने की कोशिश कर रहा हूँ। मेरी Google-ऐप-स्क्रिप्ट इस अपवाद के साथ ठीक काम कर रही है कि यह पहली ईमेल, यानी पहली पंक्ति को ईमेल नहीं करती है। यह दूसरी पंक्ति से ईमेल की लूपिंग प्रक्रिया शुरू करता है। मैं इस मुद्दे को अपने कोड में कैसे बदलूं?

function sendemail() {
  var spreadSheet = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  var secondSheet = spreadSheet[1];
  var dataRange = secondSheet.getDataRange();
  var data = dataRange.getValues();

 
     for (var i = 1; i < data.length; i++) { 
        (function(val) {
          var row = data[i];
          var emailAddress = row[0]; 
          var message = 'Test Email';
    
          MailApp.sendEmail(emailAddress, message);
          })(i);
       }
    }

यह केवल 'ईमेल 2' और 'ईमेल 3' ईमेल करता है लेकिन इस मामले में 'ईमेल 1' को नहीं। मैं इसे सभी ईमेल पर ईमेल भेजने के लिए कैसे प्राप्त करूं?

enter image description here

-2
ee8291 9 सितंबर 2020, 23:42

1 उत्तर

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

आपका फॉर-लूप शून्य से शुरू होना चाहिए। जब आप 1 से शुरू करते हैं, तो आप सरणी में पहला ईमेल छोड़ देते हैं।

for (var i = 0; i < data.length; i++) { ... }

Mozilla से:

जावास्क्रिप्ट सरणियाँ शून्य-अनुक्रमित हैं। किसी सरणी का पहला तत्व अनुक्रमणिका 0 पर है, और अंतिम तत्व अनुक्रमणिका मान पर सरणी की लंबाई गुण शून्य 1 के मान के बराबर है।

getValues() एक ऐरे देता है, इसलिए आपको चाहिए सही सूचकांक का उपयोग करने के लिए सावधान रहना। यह Google द्वारा उपयोग की जाने वाली श्रेणी अनुक्रमणिका से भिन्न है, लेकिन दस्तावेज़ीकरण में नोट किया गया है।

याद रखें कि जब एक श्रेणी अनुक्रमणिका 1 से शुरू होती है, तो जावास्क्रिप्ट सरणी [0] [0] से अनुक्रमित होती है।

2
Diego 9 सितंबर 2020, 23:49