我有一個用于 Google 表格的函式,它根據單元格值中是否包含特定變數來發送電子郵件。除了需要電子郵件收件人發送電子郵件的部分外,以下代碼的每個部分都或多或少地按預期作業。我知道問題出在哪里,我根本沒有使用代碼的經驗(提前抱歉)并且不知道如何解決這個問題。
錯誤:例外:無法發送電子郵件:沒有收件人(匿名)@ Untitled.gs:15 sendEmails @ Untitled.gs:5
感謝您的耐心等待。
function sendEmails() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Emails'); // change Sheet1 to the name of your sheet
const data = sh.getRange('A2:D' sh.getLastRow()).getValues();
data.forEach(r=>{
let sendemailValue = r[1];
if (sendemailValue === "X"){
let lrow=sh.getLastRow();
let name = r[0];
let amount = r[2];
let item = r[3];
let emailAddress = r[4];
let message = 'Hello ' name ', your receipt is ' amount ' for your ' item;
let subject = 'Your Receipt.'
MailApp.sendEmail(emailAddress, subject, message);
}
});
}
uj5u.com熱心網友回復:
您可能希望考慮這樣的添加:
if(emailAddress) {
MailApp.sendEmail(emailAddress, subject, message);
} else {
console.log(`Row: ${i 2}`);//and add ( ,i) to the forEach
}
也改變這一點:
const data = sh.getRange('A2:D' sh.getLastRow()).getValues();
對此:
const data = sh.getRange(2, 1, sh.getLastRow()-1,5).getValues();
我增加了列數并更改了格式以確保它不會在底部回傳一堆空值。但是現在我考慮一下,問題可能是您正在尋找資料范圍之外的電子郵件地址。
共:
function sendEmails() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Emails'); // change Sheet1 to the name of your sheet
const data = sh.getRange(2, 1, sh.getLastRow() - 1, 5).getValues();
data.forEach((r,i) => {
let sendemailValue = r[1];
if (sendemailValue === "X") {
let lrow = sh.getLastRow();
let name = r[0];
let amount = r[2];
let item = r[3];
let emailAddress = r[4];//this is column 5
let message = 'Hello ' name ', your receipt is ' amount ' for your ' item;
let subject = 'Your Receipt.'
if(emailAddress) {
MailApp.sendEmail(emailAddress, subject, message);
} else {
console.log(`Row: ${i 2}`);//will let you know what row it's failing on
}
}
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/379142.html
