-
-
Save vladimir-rybalko/df06a47fda3b61f94b27064c72546bab to your computer and use it in GitHub Desktop.
Setting limits for Google Form
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Time zone used from your Google Callendar */ | |
FORM_OPEN_DATE = "2014-12-20 08:00"; | |
FORM_CLOSE_DATE = "2014-12-25 23:30"; | |
RESPONSE_COUNT = "100"; | |
/* Init the from and set triggers */ | |
function Initialize() { | |
deleteTriggers_(); | |
if ((FORM_CLOSE_DATE !== "") && | |
((new Date()).getTime() >= parseDate_(FORM_CLOSE_DATE).getTime())) { | |
closeForm(); | |
} | |
if ((FORM_OPEN_DATE !== "") && | |
((new Date()).getTime() < parseDate_(FORM_OPEN_DATE).getTime())) { | |
closeForm(); | |
ScriptApp.newTrigger("openForm") | |
.timeBased() | |
.at(parseDate_(FORM_OPEN_DATE)) | |
.create(); | |
} | |
if (FORM_CLOSE_DATE !== "") { | |
ScriptApp.newTrigger("closeForm") | |
.timeBased() | |
.at(parseDate_(FORM_CLOSE_DATE)) | |
.create(); | |
} | |
if (RESPONSE_COUNT !== "") { | |
ScriptApp.newTrigger("checkLimit") | |
.forForm(FormApp.getActiveForm()) | |
.onFormSubmit() | |
.create(); | |
} | |
} | |
/* Remove all existing triggers */ | |
function deleteTriggers_() { | |
var triggers = ScriptApp.getProjectTriggers(); | |
for (var i in triggers) { | |
ScriptApp.deleteTrigger(triggers[i]); | |
} | |
} | |
/* Send email notification when from status changed */ | |
function informUser_(subject) { | |
var formURL = FormApp.getActiveForm().getPublishedUrl(); | |
MailApp.sendEmail(Session.getActiveUser().getEmail(), subject, formURL); | |
} | |
/* Set form to accept responses */ | |
function openForm() { | |
var form = FormApp.getActiveForm(); | |
form.setAcceptingResponses(true); | |
informUser_("You Google form is active."); | |
} | |
/* Closing the form */ | |
function closeForm() { | |
var form = FormApp.getActiveForm(); | |
form.setAcceptingResponses(false); | |
deleteTriggers_(); | |
informUser_("You Google Form is closed."); | |
} | |
/* If total form responses >= then set limit, then we close the form */ | |
function checkLimit() { | |
if (FormApp.getActiveForm().getResponses().length >= RESPONSE_COUNT ) { | |
closeForm(); | |
} | |
} | |
/* Parse the Date for creating Time-Based 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)); | |
} | |
/* Written by Amit Agarwal [email protected] */ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment