CheckForm.gs
START_TIME = "2014-01-01 08:00";
CLOSE_TIME = "2014-05-06 19:00";
MAX_RESPONSES = "20";
/* Initialize the form, setup triggers */
function Initialize() {
deleteTriggers_();
if ((START_TIME !== "") &&
((new Date()).getTime() < parseDate_(START_TIME).getTime())) {
closeForm();
ScriptApp.newTrigger("openForm").timeBased().at(parseDate_(START_TIME)).create();
}
if (CLOSE_TIME !== "") {
ScriptApp.newTrigger("closeForm").timeBased().at(parseDate_(CLOSE_TIME)).create();
}
if (MAX_RESPONSES !== "") {
ScriptApp.newTrigger("checkLimit").forForm(FormApp.getActiveForm()).onFormSubmit().create();
}
}
/* Delete any existing Triggers */
function deleteTriggers_() {
var triggers = ScriptApp.getScriptTriggers();
for (var i in triggers) {
ScriptApp.deleteTrigger(triggers[i]);
}
}
/* Send an email to the owner when the form is opened or closed */
function informUser_(subject) {
var formURL = FormApp.getActiveForm().getPublishedUrl();
MailApp.sendEmail(Session.getActiveUser().getEmail(), subject, formURL);
}
/* Open form to accept responses */
function openForm() {
var form = FormApp.getActiveForm();
form.setAcceptingResponses(true);
informUser_("Your Google Form is now accepting responses");
}
/* Close form from accepting reponses */
function closeForm() {
var form = FormApp.getActiveForm();
form.setAcceptingResponses(false);
deleteTriggers_();
informUser_("Your Google Form is no longer accepting responses");
}
/* If total number of responses >= limit, Close form */
function checkLimit() {
if (FormApp.getActiveForm().getResponses().length >= MAX_RESPONSES ) {
closeForm();
}
}
/* Parse the date/time for creating time triggers */
function parseDate_(d) {
return new Date(d.substr(0,4), d.substr(5,2)-1, d.substr(8,2), d.substr(11,2), d.substr(14,2));
}
Leave a comment