Javascript 检查要通知的用户的电子邮件警报脚本-Google AppScript
我在这个论坛上发现了很多有用的东西。一般来说,我对GAS和JS编码还不熟悉,我无法找到一种方法来解决一些我确信是NBD的问题 我先附上代码:Javascript 检查要通知的用户的电子邮件警报脚本-Google AppScript,javascript,loops,google-apps-script,Javascript,Loops,Google Apps Script,我在这个论坛上发现了很多有用的东西。一般来说,我对GAS和JS编码还不熟悉,我无法找到一种方法来解决一些我确信是NBD的问题 我先附上代码: function emailAlert() { // today's date information var today = new Date(); var todayMonth = today.getMonth() + 1; var todayDay = today.getDate(); var todayYear = t
function emailAlert() {
// today's date information
var today = new Date();
var todayMonth = today.getMonth() + 1;
var todayDay = today.getDate();
var todayYear = today.getFullYear();
// getting data from spreadsheet
var url = SpreadsheetApp.getActiveSpreadsheet().getUrl();
var sheet = SpreadsheetApp.openByUrl(url).getSheetByName("Assignments");
var resultssn = SpreadsheetApp.openByUrl(url).getName();
//Emails addresses
var emailJonDoe = "example@example.com"
var emailEmilyDoe = "example@example.com"
var duedatesRange = sheet.getRange("H5:H9");
var duedates = duedatesRange.getValues();
var actionitRange = sheet.getRange("C5:C9");
var actionit = actionitRange.getValues();
var prjsRange = sheet.getRange("B5:B9");
var prjs = prjsRange.getValues();
var whosRange = sheet.getRange("D5:D9");
var whos = actionitRange.getValues();
//looping through all of the rows
for (var i = 0; i < duedates.length; ++i) {
var row = duedates[i];
for (var i = 0; i < actionit.length; ++i) {
var assignmenttext = actionit[i];
for (var i = 0; i < prjs.length; ++i) {
var project = prjs[i];
for (var i = 0; i < whos.length; ++i) {
var user = whos[i];
var expireDateFormat = Utilities.formatDate(
new Date(row[i]),
'ET',
'MM/dd/yyyy'
);
// email information
var subject = '';
var message =
" One of your action items is due today. " +
'\n' +
'\n' +
' Project: ' +
project[i] +
'\n' +
'\n' +
' Action Item: ' +
assignmenttext[i] +
'\n' +
'\n' +
'Check the Tracker now !!' +
'\n' +
url;
//expiration date information
var expireDateMonth = new Date(row[i]).getMonth() + 1;
var expireDateDay = new Date(row[i]).getDate();
Logger.log("Expire date is:" + expireDateDay);
//check for JD and send email to him if true
if (
user[i] === "JD" &&
expireDateMonth === todayMonth &&
expireDateDay === todayDay
) {
var subject =
'FEG AAAAAAManagement - An action item is due today!! : ' + assignmenttext[i];
MailApp.sendEmail(emailJonDoe, subject, message);
Logger.log('todayyyy!');
}
//check for ED and send email to him if true
if (
user[i] === "ED" &&
expireDateMonth === todayMonth &&
expireDateDay === todayDay
) {
var subject =
'FEG DDDDDManagement - An action item is due today!! : ' + assignmenttext[i];
MailApp.sendEmail(emailEmilyDoe, subject, message);
Logger.log('todayyyy!');
}
}
}
}
}
}
函数emailAlert(){
//今天的日期信息
var today=新日期();
var todaymount=today.getMonth()+1;
var todayDay=today.getDate();
var todayYear=today.getFullYear();
//从电子表格中获取数据
var url=SpreadsheetApp.getActiveSpreadsheet().getUrl();
var sheet=SpreadsheetApp.openByUrl(url).getSheetByName(“分配”);
var resultssn=SpreadsheetApp.openByUrl(url.getName();
//电子邮件地址
var emailJonDoe=”example@example.com"
var emailydoe=”example@example.com"
var duedatesRange=sheet.getRange(“H5:H9”);
var duedates=duedatesRange.getValues();
var actionitRange=sheet.getRange(“C5:C9”);
var actionit=actionitRange.getValues();
var prjsRange=sheet.getRange(“B5:B9”);
var prjs=prjsRange.getValues();
var whosRange=sheet.getRange(“D5:D9”);
var whos=actionitRange.getValues();
//在所有行中循环
对于(变量i=0;i
这是一个简单的代码片段,它为H列中包含今天日期的每一行发送电子邮件
我有一个类似的已经在工作,但我想实现“用户”功能。
长话短说,我希望代码:
我愿意接受任何意见或建议。提前感谢任何愿意花时间帮助我的人。(:这可以使用单个for循环完成,检查每行中的数据:
function sendEmail() {
// today's date information
var today = new Date();
var todayMonth = today.getMonth() + 1;
var todayDay = today.getDate();
var todayYear = today.getFullYear();
Logger.log(todayDay);
// getting data from spreadsheet
var url = SpreadsheetApp.getActiveSpreadsheet().getUrl();
var sheet = SpreadsheetApp.openByUrl(url).getSheetByName("Assignments");
var resultssn = SpreadsheetApp.openByUrl(url).getName();
//Emails addresses
var emailJonDoe = "example@example.com"
var emailEmilyDoe = "example@example.com"
var lastRow = sheet.getLastRow();
var dataRange = sheet.getRange(2,1,lastRow,8).getValues();
//looping through all of the rows
for (var i = 0; i < lastRow-1; i++) {
var project = dataRange[i][1];
var assignmenttext = dataRange[i][2];
var user = dataRange[i][3];
var row = dataRange[i][7];
//expiration date information
var expireDateFormat = Utilities.formatDate(new Date(row),'ET','MM/dd/yyyy');
var expireDateMonth = new Date(row).getMonth() + 1;
var expireDateDay = new Date(row).getDate();
Logger.log("Expire date is:" + expireDateDay);
//check for expiry date
if (expireDateMonth === todayMonth && expireDateDay === todayDay) {
var subject =
'FEG AAAAAAManagement - An action item is due today!! : ' + assignmenttext;
// email information
var message =
" One of your action items is due today. " +
'\n' +
'\n' +
' Project: ' +
project +
'\n' +
'\n' +
' Action Item: ' +
assignmenttext +
'\n' +
'\n' +
'Check the Tracker now !!' +
'\n' +
url;
if (user === 'JD') {
MailApp.sendEmail(emailJonDoe, subject, message);
}
if (user === 'ED') {
MailApp.sendEmail(emailEmilyDoe, subject, message);
}
}
}
}
函数sendmail(){
//今天的日期信息
var today=新日期();
var todaymount=today.getMonth()+1;
var todayDay=today.getDate();
var todayYear=today.getFullYear();
Logger.log(今天);
//从电子表格中获取数据
var url=SpreadsheetApp.getActiveSpreadsheet().getUrl();
var sheet=SpreadsheetApp.openByUrl(url).getSheetByName(“分配”);
var resultssn=SpreadsheetApp.openByUrl(url.getName();
//电子邮件地址
var emailJonDoe=”example@example.com"
var emailydoe=”example@example.com"
var lastRow=sheet.getLastRow();
var dataRange=sheet.getRange(2,1,lastRow,8).getValues();
//在所有行中循环
对于(变量i=0;ifunction emailAlert() {
const sentcolumn=45;//I recommend adding some column to contain and indication of when an email is already been sent.
const ss=SpreadsheetApp.getActive();
const sh=ss.getSheetByName("Assignments");
const vA=sh.getRange(5,1,5,sentcolumn).getValues();//your data went from row 5 to row 9 that is five rows
const dt=new Date();
const today=new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()).valueOf();//this is a number
const emails={"JD":"jd@example.com","ED":"ed@example.com"};//emails
const prefix={"JD":"FEG AAAAAAManagement - An action item is due today!! : ","ED":"FEG DDDDDManagement - An action item is due today!! : "};//subject prefixes
vA.forEach(function(r,i){
let x=new Date(r[7]);
let duedate=new Date(x.getFullYear(),x.getMonth()+1,x.getDate()).valufOf();//this is a number
var body=Utilities.formatString('One of your action items is due today. \n\n Project: %s \n\n Action Item: %s\n\nCheck the Tracker now !!\n%s',r[1],R[2],ss.getUrl());
let subject=prefix[r[3]] + r[2];
if(today==duedate && r[sentcolumn-1]!='Sent') {
GmailApp.sendEmail(emails[r[3]],subject,body);
sh.getRange(i+5,sentcolumn).setValue('Sent');//adding something like this would keep you from sending duplicate emails by mistake
}
});
}