İki farklı sayfada veri ve e-posta listesi

Aug 18 2020

Veriler Arka Uç sayfasında var ve e-posta listesi Aboneler sayfasında var, ancak e-posta listeye gönderilmiyor, nerede yanlış yaptım?

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 (emailList, konu, gövde, {htmlBody: gövde, ad: "şirket"}); }kodu buraya girin

Yanıtlar

1 Tanaike Aug 18 2020 at 12:40

Bu değişikliğe ne dersiniz?

Değişiklik noktaları:

  • Elde edilen değerler getValues()2 boyutlu dizidir. Senin durumunda, emailListbir var emailList = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Subscribers").getRange("A2:A").getValues()gibidir [["email1"],["email2"],,,]. Ayrıca, "A2: A" aralığı durumunda, hiçbir değer dahil edilmeyebilir.
  • At MailApp.sendEmail(recipient, subject, body, options), recipientbir dizedir.

Yukarıdaki noktalarda, böyle bir hata oluşur. E-postayı içindeki tüm e-postalara göndermek istediğinizde emailList, bir döngü kullanmanız gerekir. Ya da e-postaları emailListolarak cckullanmak istediğinizde, döngüyü kullanmanız gerekmez. Bu yüzden burada, aşağıdaki 2 modeli önermek istiyorum.

Model 1:

Bu modelde, içindeki tüm e-postalar emailListolarak kullanılır recipient.

Değiştirilmiş komut dosyası:

Komut dosyanız değiştirildiğinde, lütfen aşağıdaki gibi değiştirin.

Kimden:
MailApp.sendEmail(emailList, subject, body, {htmlBody: body, name: "company"});
Kime:
emailList.forEach(([email]) => {
  if (email != "") {
    MailApp.sendEmail(email, subject, body, {htmlBody: body, name: "company"});
  }
})

Model 2:

Bu modelde, içindeki tüm e-postalar emailListolarak kullanılır cc.

Değiştirilmiş komut dosyası:

Komut dosyanız değiştirildiğinde, lütfen aşağıdaki gibi değiştirin.

Kimden:
MailApp.sendEmail(emailList, subject, body, {htmlBody: body, name: "company"});
Kime:
MailApp.sendEmail("email address", subject, body, {htmlBody: body, name: "company", cc: emailList.filter(String).toString()});

veya

MailApp.sendEmail(null, subject, body, {htmlBody: body, name: "company", cc: emailList.filter(String).toString()});
  • Bu durumda, nullolarak kullanıldığında recipient, e-posta adresinin e-posta adresini içermez to.

Not:

  • Lütfen bu değiştirilmiş komut dosyasını V8'i etkinleştirirken kullanın.

Referanslar:

  • getValues ​​()
  • sendEmail (alıcı, konu, gövde, seçenekler)