Guest User

Untitled

a guest
Feb 26th, 2018
283
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.61 KB | None | 0 0
  1. /*
  2. USAGE
  3. ?action=create
  4. &name=Form Name
  5. &choices=choice 1,choice 2,choice 3
  6.  
  7. ?action=get
  8. &formId=<formId>
  9. */
  10.  
  11. function doGet(request) {
  12. var result = execute(request.parameters);
  13. var response = JSON.stringify(result);
  14. return ContentService.createTextOutput().setContent(response).setMimeType(ContentService.MimeType.JSON);
  15. }
  16.  
  17. function execute(params) {
  18. var action = params.action || "view";
  19. var formId = params.formId || null;
  20. var name = params.name || "Default Name";
  21. var choices = (params.choices || "Default Choice 1,Default Choice 2").split(",");
  22.  
  23. if (action != "create") {
  24. return getResponses(formId);
  25. }
  26.  
  27. var form;
  28. if (formId == null) {
  29. form = FormApp.create(name);
  30. } else {
  31. form = FormApp.openById(formId);
  32. }
  33.  
  34. clearForm(form);
  35. initForm(form, name);
  36. createForm(form, choices);
  37. return {
  38. "form_url": form.getPublishedUrl(),
  39. "form_id": form.getId()
  40. };
  41. }
  42.  
  43. function getResponses(formId) {
  44. if (formId == null) {
  45. return {};
  46. }
  47. var form = FormApp.openById(formId);
  48.  
  49. var responses = {};
  50.  
  51. var formResponses = form.getResponses();
  52. for (var i = 0; i < formResponses.length; i++) {
  53. var formResponse = formResponses[i];
  54. var itemResponses = formResponse.getItemResponses();
  55.  
  56. responses[itemResponses[0].getResponse()] = itemResponses[1].getResponse();
  57. }
  58.  
  59. return responses;
  60. }
  61.  
  62. function createForm(form, choices) {
  63. var choiceNum = Math.ceil(choices.length / 3);
  64.  
  65. form.addTextItem()
  66. .setTitle("Discord tag")
  67. .setValidation(FormApp.createTextValidation()
  68. .requireTextMatchesPattern(".{3,16}[\#][0-9]{4,5}")
  69. .setHelpText("Invalid Discord Tag")
  70. .build())
  71. .setHelpText("Use your full tag, for example: Jarvis#6352.\nIf you do not, your vote will be counted as invalid.")
  72. .setRequired(true);
  73.  
  74. form.addCheckboxItem()
  75. .setTitle("Choose users you would like to vote for")
  76. .setValidation(FormApp.createCheckboxValidation()
  77. .requireSelectExactly(choiceNum)
  78. .setHelpText("Choose " + choiceNum + " applicants")
  79. .build())
  80. .setChoiceValues(choices)
  81. .setRequired(true);
  82. }
  83.  
  84. function initForm(form, title) {
  85. form.setTitle(title);
  86. form.setDescription("Generated at " + new Date());
  87. form.addEditors(["willsr71@gmail.com", "AltoidGuy2000@gmail.com", "hamockingjay@gmail.com"]);
  88. form.setAllowResponseEdits(true);
  89. form.setAcceptingResponses(true);
  90. }
  91.  
  92. function clearForm(form) {
  93. form.deleteAllResponses();
  94. form.getItems().forEach(function(item) {
  95. form.deleteItem(item);
  96. });
  97. form.getEditors().forEach(function(user){
  98. form.removeEditor(user);
  99. });
  100. }
Add Comment
Please, Sign In to add comment