İki farklı sayfada veri ve e-posta listesi
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
Bu değişikliğe ne dersiniz?
Değişiklik noktaları:
- Elde edilen değerler
getValues()
2 boyutlu dizidir. Senin durumunda,emailList
birvar 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)
,recipient
bir 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ı emailList
olarak cc
kullanmak 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 emailList
olarak 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 emailList
olarak 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,
null
olarak kullanıldığındarecipient
, e-posta adresinin e-posta adresini içermezto
.
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)