Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- USAGE
- ?action=create
- &name=Form Name
- &choices=choice 1,choice 2,choice 3
- ?action=get
- &formId=<formId>
- */
- function doGet(request) {
- var result = execute(request.parameters);
- var response = JSON.stringify(result);
- return ContentService.createTextOutput().setContent(response).setMimeType(ContentService.MimeType.JSON);
- }
- function execute(params) {
- var action = params.action || "view";
- var formId = params.formId || null;
- var name = params.name || "Default Name";
- var choices = (params.choices || "Default Choice 1,Default Choice 2").split(",");
- if (action != "create") {
- return getResponses(formId);
- }
- var form;
- if (formId == null) {
- form = FormApp.create(name);
- } else {
- form = FormApp.openById(formId);
- }
- clearForm(form);
- initForm(form, name);
- createForm(form, choices);
- return {
- "form_url": form.getPublishedUrl(),
- "form_id": form.getId()
- };
- }
- function getResponses(formId) {
- if (formId == null) {
- return {};
- }
- var form = FormApp.openById(formId);
- var responses = {};
- var formResponses = form.getResponses();
- for (var i = 0; i < formResponses.length; i++) {
- var formResponse = formResponses[i];
- var itemResponses = formResponse.getItemResponses();
- responses[itemResponses[0].getResponse()] = itemResponses[1].getResponse();
- }
- return responses;
- }
- function createForm(form, choices) {
- var choiceNum = Math.ceil(choices.length / 3);
- form.addTextItem()
- .setTitle("Discord tag")
- .setValidation(FormApp.createTextValidation()
- .requireTextMatchesPattern(".{3,16}[\#][0-9]{4,5}")
- .setHelpText("Invalid Discord Tag")
- .build())
- .setHelpText("Use your full tag, for example: Jarvis#6352.\nIf you do not, your vote will be counted as invalid.")
- .setRequired(true);
- form.addCheckboxItem()
- .setTitle("Choose users you would like to vote for")
- .setValidation(FormApp.createCheckboxValidation()
- .requireSelectExactly(choiceNum)
- .setHelpText("Choose " + choiceNum + " applicants")
- .build())
- .setChoiceValues(choices)
- .setRequired(true);
- }
- function initForm(form, title) {
- form.setTitle(title);
- form.setDescription("Generated at " + new Date());
- form.addEditors(["willsr71@gmail.com", "AltoidGuy2000@gmail.com", "hamockingjay@gmail.com"]);
- form.setAllowResponseEdits(true);
- form.setAcceptingResponses(true);
- }
- function clearForm(form) {
- form.deleteAllResponses();
- form.getItems().forEach(function(item) {
- form.deleteItem(item);
- });
- form.getEditors().forEach(function(user){
- form.removeEditor(user);
- });
- }
Add Comment
Please, Sign In to add comment