#google-apps-script #google-sheets
Вопрос:
Я использую этот скрипт для автоматической отправки электронной почты, когда дата = текущая дата затем запускается, но он не отправляет электронное письмо, я не знаю, почему.
Ваша помощь будет очень признательна.
https://docs.google.com/spreadsheets/d/1wxDa9D9a1wddqu9Fh4r3uZAX0m1NKNj2H7g_uS141-0/edit#gid=0
function sendEmail() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Mysheet");
var startRow = 2; // First row of data to process
var numRows = sheet.getLastRow()-1; // Number of rows to process
// Fetch the range of cells A2:B3
var dataRange = sheet.getRange(startRow, 1, numRows, sheet.getLastColumn());
// Fetch values for each row in the Range.
var data = dataRange.getValues();
Logger.log(data)
for (i in data) {
var row = data[i];
var date = new Date();
var sheetDate = new Date(row[1]);
Sdate=Utilities.formatDate(date,'GMT 0200','yyyy:MM:dd')
SsheetDate=Utilities.formatDate(sheetDate,'GMT 0200', 'yyyy:MM:dd')
Logger.log(Sdate ' =? ' SsheetDate)
if (Sdate == SsheetDate){
var emailAddress = row[0]; // First column
var message = row[2]; // Second column
var subject = "Sending emails from a Spreadsheet";
// MailApp.sendEmail(emailAddress, subject, message);
Logger.log('SENT :' emailAddress ' ' subject ' ' message)
}
}
}
Комментарии:
1. При запуске кода условие строки 2 передается, поэтому оно должно отправлять почту. Что вы видите в журналах за эти 2 даты ?
2. Но это не отправка электронных писем. вот окна журнала выполнения imgur.com/NnylGS3 это показывает, что электронное письмо было отправлено. затем я использовал разные электронные письма, проблема была такой же.
Ответ №1:
function sendEmail() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName("Mysheet");
const startRow = 2;
const subject = "Sending emails from a Spreadsheet";
const vs = sh.getRange(startRow, 1, sh.getLastRow() - startRow 1, sh.getLastColumn()).getValues();
vs.forEach(row => {
let dt = new Date();
let dtv = new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()).valueOf();
let sdt = new Date(row[1]);
let sdtv = new Date(sdt.getFullYear(),sdt.getMonth(),sdt.getDate()).valueOf();
if (sdtv == dtv){
MailApp.sendEmail(row[0], subject, row[2]);
}
});
}
Комментарии:
1. Спасибо @Cooper, теперь все работает идеально.