This repository was archived by the owner on Apr 18, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathTriggerManager.js
More file actions
84 lines (71 loc) · 2.91 KB
/
TriggerManager.js
File metadata and controls
84 lines (71 loc) · 2.91 KB
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
function installTriggers() {
var userProperties = PropertiesService.getUserProperties();
var properties = userProperties.getProperties();
//Check if each of the triggers have an ID (are currently installed)
var sendTriggerID = properties["sendTrigger"];
var requestTriggerID = properties["requestTrigger"];
var lockTriggerID = properties["lockTrigger"];
var unlockTriggerID = properties["unlockTrigger"];
if (!sendTriggerID && !requestTriggerID && !lockTriggerID && !unlockTriggerID) {
// Send every week on Monday at 0800.
var sendTrigger = ScriptApp.newTrigger('sendEnnouncementAuto')
.timeBased()
.onWeekDay(ScriptApp.WeekDay.MONDAY)
.atHour(8)
.create();
userProperties.setProperty("sendTrigger", sendTrigger.getUniqueId()); //Remember the ID for the user to delete it later.
// Request submissions every Thursday at 1200.
var requestTrigger = ScriptApp.newTrigger('sendRequestAuto')
.timeBased()
.onWeekDay(ScriptApp.WeekDay.THURSDAY)
.atHour(12)
.create();
userProperties.setProperty("requestTrigger", requestTrigger.getUniqueId());
// Lock the form every Friday at 1515.
var lockTrigger = ScriptApp.newTrigger('lockForm')
.timeBased()
.onWeekDay(ScriptApp.WeekDay.FRIDAY)
.atHour(15)
.nearMinute(15)
.create();
userProperties.setProperty("lockTrigger", lockTrigger.getUniqueId());
// Unlock the form every Monday at 0800.
var unlockTrigger = ScriptApp.newTrigger('unlockForm')
.timeBased()
.onWeekDay(ScriptApp.WeekDay.MONDAY)
.atHour(8)
.create();
userProperties.setProperty("unlockTrigger", unlockTrigger.getUniqueId());
}
else {throw ("Triggers are already installed. Stopping.");}
}
function deleteTriggers() {
var userProperties = PropertiesService.getUserProperties();
var properties = userProperties.getProperties();
var sendTriggerID = properties["sendTrigger"];
var requestTriggerID = properties["requestTrigger"];
var lockTriggerID = properties["lockTrigger"];
var unlockTriggerID = properties["unlockTrigger"];
if (sendTriggerID && requestTriggerID && lockTriggerID && unlockTriggerID) {
deleteTrigger(sendTriggerID);
deleteTrigger(requestTriggerID);
deleteTrigger(lockTriggerID);
deleteTrigger(unlockTriggerID);
userProperties.deleteProperty("sendTrigger");
userProperties.deleteProperty("requestTrigger");
userProperties.deleteProperty("lockTrigger");
userProperties.deleteProperty("unlockTrigger");
}
else {throw ("Triggers are not currently installed. Stopping.");}
}
function deleteTrigger(triggerId) {
// Loop over all triggers.
var allTriggers = ScriptApp.getProjectTriggers();
for (var i = 0; i < allTriggers.length; i++) {
// If the current trigger is the correct one, delete it.
if (allTriggers[i].getUniqueId() === triggerId) {
ScriptApp.deleteTrigger(allTriggers[i]);
break;
}
}
}