डेटा और ईमेल सूची दो अलग-अलग शीट में
मेरे पास बैकएंड शीट में डेटा है और मेरे पास सब्सक्राइबर्स शीट पर ईमेल सूची है , लेकिन ईमेल को सूची में नहीं भेजा जाता है, मैं कहाँ गलत हो गया?
function sendEmail(e) {
var thisSheet = e.source.getActiveSheet();
if (thisSheet.getName() !== 'Backend' || e.range.columnStart !== 17 || e.range.rowStart == 1 || e.value !== 'LOCAL') return;
var body, headers = thisSheet.getRange(1, 1, 1, 6)
.getValues()[0],
thisRow = thisSheet.getRange(e.range.rowStart, 1, 1, 6)
.getValues()[0],
vehicle = thisRow[3],
vehicle2 = thisRow[4],
subject = "⚫ Vehicle Ready "+vehicle +" "+vehicle2
var emailList = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Subscribers").getRange("A2:A").getValues();
body = "<i>The following vehicle is ready after wash</i><br><br>",
i = 0;
while (i < 6) {
body += '<font style="font-size:14px;color:grey;font-family: Arial">'+headers[i] +'</font>'+' - <b><font style="font-size:14px;font-family: Arial">' + thisRow[i] +'</font></b><br><hr width="30%" align="left" Color="#bfbfbf" size="0.75">';
i++;
}
MailApp.sendEmail (ईमेललिस्ट, विषय, शरीर, {htmlBody: शरीर, नाम: "कंपनी"}); }यहाँ कोड दर्ज करें
जवाब
इस संशोधन के बारे में कैसे?
संशोधन अंक:
- द्वारा प्राप्त मूल्यों
getValues()
को 2 आयामी सरणी है। आपके मामले में,emailList
कीvar emailList = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Subscribers").getRange("A2:A").getValues()
तरह है[["email1"],["email2"],,,]
। और साथ ही, "A2: A" श्रेणी के मामले में, कोई भी मूल्य शामिल नहीं किया जा सकता है। - पर
MailApp.sendEmail(recipient, subject, body, options)
,recipient
एक स्ट्रिंग है।
उपरोक्त बिंदुओं से, ऐसी त्रुटि होती है। जब आप ईमेल को सभी ईमेल में भेजना चाहते हैं emailList
, तो लूप का उपयोग करना आवश्यक है। या, जब आप में ईमेल का उपयोग करना चाहते emailList
के रूप में cc
, यह पाश उपयोग करने के लिए आवश्यक नहीं है। तो यहाँ, मैं निम्नलिखित 2 पैटर्न का प्रस्ताव करना चाहूंगा।
पैटर्न 1:
इस पैटर्न में, सभी ईमेल emailList
का उपयोग किया जाता है recipient
।
संशोधित स्क्रिप्ट:
जब आपकी स्क्रिप्ट को संशोधित किया जाता है, तो कृपया निम्नानुसार संशोधित करें।
से:MailApp.sendEmail(emailList, subject, body, {htmlBody: body, name: "company"});
सेवा:
emailList.forEach(([email]) => {
if (email != "") {
MailApp.sendEmail(email, subject, body, {htmlBody: body, name: "company"});
}
})
पैटर्न 2:
इस पैटर्न में, सभी ईमेल emailList
का उपयोग किया जाता है cc
।
संशोधित स्क्रिप्ट:
जब आपकी स्क्रिप्ट को संशोधित किया जाता है, तो कृपया निम्नानुसार संशोधित करें।
से:MailApp.sendEmail(emailList, subject, body, {htmlBody: body, name: "company"});
सेवा:
MailApp.sendEmail("email address", subject, body, {htmlBody: body, name: "company", cc: emailList.filter(String).toString()});
या
MailApp.sendEmail(null, subject, body, {htmlBody: body, name: "company", cc: emailList.filter(String).toString()});
- इस स्थिति में, जब
null
इसका उपयोग किया जाता हैrecipient
, तो ईमेल में ईमेल का पता शामिल नहीं होता हैto
।
ध्यान दें:
- कृपया V8 को सक्षम करने के साथ इस संशोधित स्क्रिप्ट का उपयोग करें।
संदर्भ:
- getValues ()
- sendEmail (प्राप्तकर्ता, विषय, निकाय, विकल्प)