我有一个功能需要使用我 sheet 单元格范围内的电子邮件
I have a function that needs to use emails that are within a cell range on my sheet
我有一个用于 Google 表格的函数,它根据单元格值中是否包含特定变量来发送电子邮件。以下代码的每个部分都或多或少地按预期工作,除了需要电子邮件收件人发送电子邮件的部分。我知道问题出在哪里,我只是完全没有使用代码的经验(提前抱歉)并且不知道如何解决这个问题。
错误:
异常:发送电子邮件失败:无收件人
(匿名)@ Untitled.gs:15
发送电子邮件@ 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);
}
});
}
您可能希望考虑这样的添加:
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();
我增加了列数并更改了格式以确保它不会 return 底部出现一堆空值。但现在我想起来,问题可能是您正在寻找数据范围之外的电子邮件地址。
一共:
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
}
}
});
}
我有一个用于 Google 表格的函数,它根据单元格值中是否包含特定变量来发送电子邮件。以下代码的每个部分都或多或少地按预期工作,除了需要电子邮件收件人发送电子邮件的部分。我知道问题出在哪里,我只是完全没有使用代码的经验(提前抱歉)并且不知道如何解决这个问题。
错误: 异常:发送电子邮件失败:无收件人 (匿名)@ Untitled.gs:15 发送电子邮件@ 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);
}
});
}
您可能希望考虑这样的添加:
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();
我增加了列数并更改了格式以确保它不会 return 底部出现一堆空值。但现在我想起来,问题可能是您正在寻找数据范围之外的电子邮件地址。
一共:
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
}
}
});
}