मेरे पास एक ऐसा फ़ंक्शन है जो मेनू में अनुरोध किए जाने पर एक ईमेल भेजता है। उस ईमेल के मुख्य भाग में दो कॉलम होते हैं। मुझे केवल उस तालिका से पंक्तियों को चुनना है जो कॉलम सी में "पास" के बराबर है। मैं ऐसा करने के लिए अपने फ़ंक्शन को कैसे बदलूं?

function SendEmail() {
    var data = rpt.getRange("B:C").getValues();
    //var htmltable =[];

    var TABLEFORMAT = 'cellspacing="2" cellpadding="2" dir="ltr" border="1" style="width:100%;table-layout:fixed;font-size:10pt;font-family:arial,sans,sans-serif;border-collapse:collapse;border:1px solid #ccc;font-weight:normal;color:black;background-color:white;text-align:center;text-decoration:none;font-style:normal;'
    var htmltable = '<table ' + TABLEFORMAT + ' ">';

    for (row = 0; row < data.length; row++) {

        htmltable += '<tr>';

        for (col = 0; col < data[row].length; col++) {
            if (data[row][col] === "" || 0) {
                htmltable += '<td>' + 'None' + '</td>';
            } else
            if (row === 0) {
                htmltable += '<th>' + data[row][col] + '</th>';
            } else {
                htmltable += '<td>' + data[row][col] + '</td>';
            }
        }

        htmltable += '</tr>';
    }

    htmltable += '</table>';
    Logger.log(data);
    Logger.log(htmltable);
    MailApp.sendEmail(Session.getActiveUser().getEmail(), 'Keyword Blueprint Report', '', {
        htmlBody: htmltable
    })
}
1
MegaMikeJr 27 जिंदा 2021, 05:03
if(data[row].join("").indexOf("PASS")>-1){send your email}
 – 
Cooper
27 जिंदा 2021, 05:20

1 उत्तर

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

निम्नलिखित संशोधन के बारे में कैसे?

से:

var data = rpt.getRange("B:C").getValues();

प्रति:

var data = rpt.getRange("B1:C" + rpt.getLastRow()).getValues().filter(([,c]) => c == "PASS");

या, यदि आप पहली पंक्ति (शीर्षलेख पंक्ति) छोड़ना चाहते हैं, तो आप निम्न स्क्रिप्ट का भी उपयोग कर सकते हैं।

var data = rpt.getRange("B1:C" + rpt.getLastRow()).getValues().filter(([,c], i) => i == 0 || c == "PASS");
  • इस संशोधन में, पुनर्प्राप्त मान फ़िल्टर किए जाते हैं।
  • मैंने सोचा था कि जब सीमा को "B1:C" + rpt.getLastRow() में संशोधित किया जाएगा, तो प्रक्रिया लागत कम हो जाएगी।

सन्दर्भ:

1
Tanaike 28 जिंदा 2021, 08:04
इस त्वरित सहायता के लिए धन्यवाद। इसने काम किया लेकिन इसने हेडर कॉलम को हटा दिया जो लेबल करता है कि कॉलम बी और सी क्या हैं। मैं कैसे सुनिश्चित कर सकता हूं कि पंक्ति 1 बनी रहे?
 – 
MegaMikeJr
28 जिंदा 2021, 06:54
ब्राउन उत्तर देने के लिए धन्यवाद। मैं असुविधा के लिए माफी माँगता हूँ। आपके उत्तर से, मैंने अपना उत्तर अपडेट कर दिया। क्या आप कृपया इसकी पुष्टि कर सकते हैं? यदि वह वह परिणाम नहीं था जिसकी आप अपेक्षा करते हैं, तो मैं फिर से क्षमा चाहता हूँ।
 – 
Tanaike
28 जिंदा 2021, 08:04
यह पूर्ण है! तुम्हारे सहयोग के लिए तुम्हे धन्यवाद।
 – 
MegaMikeJr
28 जिंदा 2021, 16:34
जवाब देने के लिए धन्यवाद। मुझे खुशी है कि आपकी समस्या का समाधान हो गया।
 – 
Tanaike
29 जिंदा 2021, 03:35