-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmail_date.js
238 lines (171 loc) · 7.83 KB
/
mail_date.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
function sendEmail()
{
//Basic Initialization
//Change name to the name of your Spreadsheet
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Emails").activate();
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lr = ss.getLastRow();
var count = 0;
//Color Variables
var color = "#ccc";
var color1 = "#2fb726";
var color2 = "#FFFF00";
//Basic Variables
var i = 0;
var m=0;
var name;
var sheets = SpreadsheetApp.getActive().getSheets();
var numer = SpreadsheetApp.getActive().getNumSheets();
//Check for Sheet Existence
for(i=0; i<numer; i++)
{
name = sheets[i].getName();
if(name == "Template")
{
m = 1;
break;
}
else
{
continue;
}
}
//If sheet Exists
if(m == 1)
{
SpreadsheetApp.getActive().setActiveSheet(SpreadsheetApp.getActive().getSheetByName('Template'), true);
}
else
{
//Set message accordingt to your Needs.
SpreadsheetApp.getActive().insertSheet(SpreadsheetApp.getActive().getActiveSheet().getIndex() + 1).activate();
SpreadsheetApp.getActive().getActiveSheet().setName('Template');
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Template").getRange(1, 1).setValue("Hello {name},\n\nThis is a Reminder that your {class} is DUE for build in {days} days.\n\nBest Regards,\nXacrolyte");
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Template").getRange(1, 2).setValue("Hello {name},\n\nThis is a Reminder that your {class} is OVERDUE for build in {days} days.\n\nBest Regards,\nXacrolyte");
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Template").getRange(2, 1).setValue("Hello {name},\n\nThis is a Reminder that your {class} is finished and you MAY start the UAT.\n\nBest Regards,\nXacrolyte");
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Template").getRange(2, 2).setValue("Hello {name},\n\nThis is a Reminder that your {class} is finished and waiting UAT for {days} days.\n\nBest Regards,\nXacrolyte");
}
//Template initialization
var templateTextBuild = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Template").getRange(1, 1).getValue();
var templateTextOBuild = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Template").getRange(1, 2).getValue();
var templateTextMUAT = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Template").getRange(2, 1).getValue();
var templateTextUAT = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Template").getRange(2, 2).getValue();
//Qouta var and check
var qoutaLeft = MailApp.getRemainingDailyQuota();
Logger.log("Dailt qouta left = " + qoutaLeft);
//If qouta is not available
if((lr-1)>qoutaLeft)
{
Browser.msgBox('You have ' + qoutaLeft + ' mail qouta left and you are trying to send ' + (lr-1) + ' mails');
}
//If qouta is available
else
{
//Sends Mails to all
for(var i=2; i<=lr; i++)
{
//State Var
var currentState = ss.getRange(i, 5).getValue();
//St-Date var
var stDate = ss.getRange(i, 11).getValue();
var stformatDate = new Date(stDate);
//End-Date var
var endDate = ss.getRange(i, 12).getValue();
var endformatDate = new Date(endDate);
//Current-Date var
var now = new Date();
//Comp-Date var
var compDate = ss.getRange(i, 13).getValue();
var compformatDate = new Date(compDate);
//UATComp-Date var
var UATcompDate = ss.getRange(i, 14).getValue();
var UATcompformatDate = new Date(UATcompDate);
//Difference in Date
var diff = (endformatDate.valueOf() - now.valueOf());
var dayDiff = parseInt(diff * 0.00000001157407);
if (currentState == "Complete")
{
var setColor1 = ss.getRange(i, 5).setBackground(color1);
}
//If Comp-Date is not Filled
else if (compDate == "" && UATcompDate=="")
{
//If End-Date is Approaching
if (endformatDate.valueOf() > now.valueOf())
{
//If End-Date approaching in 7 days
if (dayDiff<8 && dayDiff>0) //DUE
{
Logger.log("Number of days left = " + dayDiff);
var currentEmail = ss.getRange(i, 24).getValue();
var currentClassTitle = ss.getRange(i, 2).getValue();
var currentName = ss.getRange(i, 23).getValue();
var messageBody = templateTextBuild.replace("{name}", currentName).replace("{class}",currentClassTitle).replace("{days}",dayDiff);
var subjectLine = "Reminder: "+ currentClassTitle + " DUE";
count += 1;
Logger.log(count);
Logger.log(subjectLine);
Logger.log(messageBody);
var setColor1 = ss.getRange(i, 5).setBackground(color2);
MailApp.sendEmail(currentEmail, subjectLine, messageBody);
}//dayDiff if
}//End-Date if
else if (endformatDate.valueOf() <= now.valueOf())//OVERDUE
{
Logger.log("Number of days added to delay = " +dayDiff);
var currentEmail = ss.getRange(i, 24).getValue();
var currentClassTitle = ss.getRange(i, 2).getValue();
var currentName = ss.getRange(i, 23).getValue();
var messageBody = templateTextOBuild.replace("{name}", currentName).replace("{class}",currentClassTitle).replace("{enddate}",endformatDate).replace("{days}",dayDiff);
var subjectLine = "Reminder: "+ currentClassTitle + " OVERDUE";
count += 1;
Logger.log(count);
Logger.log(subjectLine);
Logger.log(messageBody);
MailApp.sendEmail(currentEmail, subjectLine, messageBody);
}//End-Date else
}//Comp-Date if
//If Comp-Date is Filled
else
{
//If UATcomp-Date is not present
if(UATcompDate == "")
{
//If compDate has passed endDate
if (compDate.valueOf() >= endDate.valueOf()) //UAT
{
Logger.log("Number of days added to delay = " + dayDiff);
var currentEmail = ss.getRange(i, 22).getValue();
var currentClassTitle = ss.getRange(i, 2).getValue();
var currentName = ss.getRange(i, 23).getValue();
var messageBody = templateTextUAT.replace("{name}", currentName).replace("{class}",currentClassTitle).replace("{days}",(dayDiff*(-1)));
var subjectLine = "Reminder: "+ currentClassTitle + " UAT";
count += 1;
Logger.log(count);
Logger.log(subjectLine);
Logger.log(messageBody);
MailApp.sendEmail(currentEmail, subjectLine, messageBody);
}//Comp-Date present-if
else //MAY_UAT
{
Logger.log("Number of days left = " +dayDiff);
var currentEmail = ss.getRange(i, 22).getValue();
var currentClassTitle = ss.getRange(i, 2).getValue();
var currentName = ss.getRange(i, 23).getValue();
var messageBody = templateTextMUAT.replace("{name}", currentName).replace("{class}",currentClassTitle).replace("{days}",(dayDiff*(-1)));
var subjectLine = "Reminder: "+ currentClassTitle + " MAY-UAT";
count += 1;
Logger.log(count);
Logger.log(subjectLine);
Logger.log(messageBody);
MailApp.sendEmail(currentEmail, subjectLine, messageBody);
}//Comp-Date present-else
}//UATcomp-Date if
else
{
var setColor = ss.getRange(i, 5).setBackground(color);
}
}//Comp-date else
}//For-loop
}//Qouta
}