0% found this document useful (0 votes)
39 views

Form Limiter Script

This document defines functions to programmatically control a Google Form using triggers. It sets open and close dates to automatically start and stop accepting responses. It also checks the response count and closes the form if the limit is reached. Functions are defined to initialize triggers based on the dates, delete existing triggers, and notify the form owner by email when the form status changes.

Uploaded by

wildanbizshop
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
39 views

Form Limiter Script

This document defines functions to programmatically control a Google Form using triggers. It sets open and close dates to automatically start and stop accepting responses. It also checks the response count and closes the form if the limit is reached. Functions are defined to initialize triggers based on the dates, delete existing triggers, and notify the form owner by email when the form status changes.

Uploaded by

wildanbizshop
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

FORM_OPEN_DATE = "2014-12-20 08:00";

FORM_CLOSE_DATE = "2014-12-25 23:30";


RESPONSE_COUNT = "100";

/* Web tutorial: http://labnol.org/?p=20707 */

/* Initialize the form, setup time based triggers */


function Initialize() {

deleteTriggers_();

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();
}

/* Delete all existing Script Triggers */


function deleteTriggers_() {
var triggers = ScriptApp.getProjectTriggers();
for (var i in triggers) {
ScriptApp.deleteTrigger(triggers[i]);
}
}

/* Send a mail to the form owner when the form status changes */
function informUser_(subject) {
var formURL = FormApp.getActiveForm().getPublishedUrl();
MailApp.sendEmail(Session.getActiveUser().getEmail(), subject, formURL);
}

/* Allow Google Form to Accept Responses */


function openForm() {
var form = FormApp.getActiveForm();
form.setAcceptingResponses(true);
informUser_("Your Google Form is now accepting responses");
}

/* Close the Google Form, Stop Accepting Reponses */


function closeForm() {
var form = FormApp.getActiveForm();
form.setAcceptingResponses(false);
deleteTriggers_();
informUser_("Your Google Form is no longer accepting responses");
}

/* If Total # of Form Responses >= Limit, Close 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));
}

You might also like