Data dan daftar email dalam dua lembar berbeda
Saya memiliki data di lembar Backend dan saya memiliki daftar email di lembar Pelanggan , tetapi email tidak terkirim ke daftar, apa kesalahan saya?
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, subject, body, {htmlBody: body, name: "company"}); } masukkan kode di sini
Jawaban
Bagaimana dengan modifikasi ini?
Poin modifikasi:
- Nilai yang diambil
getValues()
adalah array 2 dimensi. Dalam kasus Anda,emailList
darivar emailList = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Subscribers").getRange("A2:A").getValues()
adalah seperti[["email1"],["email2"],,,]
. Dan juga, dalam kasus rentang "A2: A", tidak ada nilai yang mungkin disertakan. - Di
MailApp.sendEmail(recipient, subject, body, options)
,recipient
adalah string.
Dengan poin-poin di atas, kesalahan seperti itu terjadi. Ketika Anda ingin mengirim email ke semua email masuk emailList
, itu diperlukan untuk menggunakan loop. Atau, bila Anda ingin menggunakan email emailList
sebagai cc
, tidak perlu menggunakan loop. Jadi di sini, saya ingin mengusulkan 2 pola berikut.
Pola 1:
Dalam pola ini, semua email yang masuk emailList
digunakan sebagai recipient
.
Skrip yang dimodifikasi:
Jika skrip Anda diubah, harap ubah seperti berikut.
Dari:MailApp.sendEmail(emailList, subject, body, {htmlBody: body, name: "company"});
Untuk:
emailList.forEach(([email]) => {
if (email != "") {
MailApp.sendEmail(email, subject, body, {htmlBody: body, name: "company"});
}
})
Pola 2:
Dalam pola ini, semua email yang masuk emailList
digunakan sebagai cc
.
Skrip yang dimodifikasi:
Jika skrip Anda diubah, harap ubah seperti berikut.
Dari:MailApp.sendEmail(emailList, subject, body, {htmlBody: body, name: "company"});
Untuk:
MailApp.sendEmail("email address", subject, body, {htmlBody: body, name: "company", cc: emailList.filter(String).toString()});
atau
MailApp.sendEmail(null, subject, body, {htmlBody: body, name: "company", cc: emailList.filter(String).toString()});
- Dalam hal ini, bila
null
digunakan sebagairecipient
, email tidak menyertakan alamat emailto
.
catatan:
- Harap gunakan skrip yang dimodifikasi ini dengan mengaktifkan V8.
Referensi:
- getValues ()
- sendEmail (penerima, subjek, isi, opsi)