Guest User

Untitled

a guest
Dec 18th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.22 KB | None | 0 0
  1. function onOpen() {
  2. SpreadsheetApp.getUi().createMenu('Tournament Setup')
  3. .addItem('1a. Set up Form', 'FormSetup')
  4. .addItem('1b. Set up Sheet', 'SheetSetup')
  5. .addItem('2. Set up Draft', 'DraftBoardSetup')
  6. .addToUi()
  7. }
  8.  
  9. function FormSetup() {
  10. var form = FormApp.openById('17eUUc1G6jgAJM40_AqvzBlrtgk-1mQu1QT1cmfSylw8'); // insert form location here
  11. var ss = SpreadsheetApp.openById('1eeYA5IVd-f3rjyUqToIwAa7ZSrnvnDXj5qE0f0hF_X4'); // denotes current spreadsheet
  12. var seasonold = ss.getSheets()[5]; // denotes the old season
  13. seasonold.deleteColumns(1,11); // deletes autoscore stuff from the previous season, used to reduce clutter
  14. form.removeDestination(); // Unlinks the form from its current location, done as a precaution
  15. form.deleteAllResponses(); // Deletes all responses from the form
  16. form.setDestination(FormApp.DestinationType.SPREADSHEET, ss.getId()); // links form to spreadsheet
  17. var sheet = ss.getSheets()[0]; // Google Forms always inserts to the far left, which is spreadsheet 0.
  18. var ssurl = ss.getUrl(); // gets URL of the spreadsheet
  19. var sheetid = sheet.getSheetId(); // gets the ID of the spreadsheet
  20. form.setDescription('Spreadsheets here: ' + ssurl+'#gid='+sheetid); // updates the description with the new spreadsheet link
  21. form.setConfirmationMessage('Thanks for signing up and have fun! c: If you missed it, link to the spreadsheet: ' + ssurl+'#gid='+sheetid); // updates the confirmation message with the new spreAHsheet link
  22. var sh2 = ss.getSheetByName('Forms'); // sheet of the Forms
  23. sh2.getRange('e2').setValue(ssurl+'#gid='+sheetid); // Updates the current Spreadsheet link corresponding to the tourney
  24. var hof = ss.getSheetByName('Hall of Fame')
  25. var sheetdate = hof.getRange('b4');
  26. var sheetdset = hof.getRange('c4');
  27. sheetdset.copyTo(sheetdate,{contentsOnly: true});
  28. }
  29.  
  30. function SheetSetup() {
  31. // NOTE: THIS SCRIPT EXHIBITS BUGGY BEHAVIORS DUE TO POTENTIAL TIMEOUT OF FUNCTIONS. IF AN ERROR OCCURS, RESET THE SPREAHSHEET AND TRY THE SCRIPT AGAIN. A SECOND RUN USUALLY HAS NO PROBLEMS.
  32. var ss = SpreadsheetApp.openById('1eeYA5IVd-f3rjyUqToIwAa7ZSrnvnDXj5qE0f0hF_X4'); // denotes current spreAHsheet
  33. var sheet = ss.getSheets()[0]; // Assumes current sheet is on index 0, or on the far left
  34. sheet = ss.getSheets()[0];
  35. var season = ss.getSheets().length-14+250; // -10 is used to get to the right season number, may change depending on implementation
  36. ss.setActiveSheet(ss.getSheets()[0]); // used for the renameActiveSheet in the next line
  37. ss.renameActiveSheet("S-"+season); // exhibits buggy behavior due to potential timeout, make sure that this sheet is open and AGtive to reduce issues
  38. sheet.deleteColumns(8,5); // also exhibits buggy behavior due to potential timeout, just reset and try the script again if it fails at this point
  39. sheet.setColumnWidth(7,100); // in order to standardize the scoring tAFle, columns H-L are deleted, G is set to default size 100
  40. sheet.insertColumnsBefore(1,11); // inserts 7 columns to make room for Autoscore,BAGkscore
  41. sheet.setFrozenRows(0); // Google Forms freezes 1 row by default, changes to 0 rows
  42. var sh1 = ss.getSheetByName('Ban List'); // Location of Conditional Formatting
  43. var rowEnd = sheet.getLastRow(); // used for the lols
  44. sh1.getRange("M1:Q").copyFormatToRange(sheet, 13, 17, 1, rowEnd); // copies conditional formatting to the form sheet
  45. sheet.insertRows(1, 3); // inserts space for the header
  46. var sh2 = ss.getSheetByName('Templates.STND'); // sheet of the header
  47. var rangeToCopy = sh2.getRange(1, 1, 4, 35); // location of the header
  48. rangeToCopy.copyTo(sheet.getRange(1, 1)); // copies header to the season sheet
  49. sheet.hideColumns(1, 12); // hides Col A-H
  50. ss.setActiveSheet(ss.getSheets()[0]);
  51. ss.moveActiveSheet(6);
  52. var sh2 = ss.getSheetByName('Hall of Fame'); // sheet of the Forms
  53. sh2.getRange('b6').setValue(season);
  54. var sh3 = ss.getSheetByName('Export');
  55. sh3.getRange('b1').setValue(season);
  56. sheet.getRange('m2').setValue("Season "+season); // sets number of season
  57. }
  58.  
  59. function DraftBoardSetup() {
  60. // NOTE: MOVE THE SEASON SHEET TO THE RIGHT LOCATION BEFORE STARTING THIS SCRIPT
  61. var ss = SpreadsheetApp.openById('1eeYA5IVd-f3rjyUqToIwAa7ZSrnvnDXj5qE0f0hF_X4'); // denotes current spreAHsheet
  62. // CHANGE THE SHEET VAR TO WHERE THE SEASON SHEET USUALLY RESIDES
  63. var sheet = ss.getSheets()[5]; // assumes that the current season is on index 5, or 6 from the left
  64. // CHANGE THE SHEET VAR TO WHERE THE SEASON SHEET USUALLY RESIDES
  65. var range = sheet.getRange("T3"); // gets the cell for team number
  66. var cell = range.getValue(); // sets var for number of teams
  67. var sh2 = ss.getSheetByName('Templates.STND'); // sheet of the draft board
  68. // List of Templates:
  69. // STND = Standard Templates
  70. // FALL = Fall Templates
  71. var valuesrand = [];
  72. for (i=1;i<=cell;i++){
  73. valuesrand.push(["=RAND"]);}
  74. if ( cell == 3 ) {
  75. sheet.insertRows(4, 7); // inserts spAGe for the board
  76. var rangeToCopy = sh2.getRange(6, 12, 7, 24); // location of the board
  77. rangeToCopy.copyTo(sheet.getRange(4, 12)); // copies board to the season sheet
  78. var range = sheet.getRange('O6:Q8');
  79. var rangep = sheet.getRange('M12:M23');
  80. var validation = SpreadsheetApp.newDataValidation().requireValueInRange(rangep,false).build();
  81. range.setDataValidation(validation);
  82. var rangerand = sheet.getRange("AF6:AF8");
  83. rangerand.setValues(valuesrand);
  84. var rangesort = sheet.getRange("AE6:AF8");
  85. rangesort.sort(32);
  86. var rangecap = sheet.getRange ("AG6:AH8");
  87. rangecap.copyTo(rangerand,{contentsOnly: true});
  88. }
  89. else if ( cell == 4 ) {
  90. sheet.insertRows(4, 13);
  91. var rangeToCopy = sh2.getRange(13, 12, 13, 24); // location of the board
  92. rangeToCopy.copyTo(sheet.getRange(4, 12)); // copies board to the season sheet
  93. var range = sheet.getRange('O6:Q9');
  94. var rangep = sheet.getRange('M18:M33');
  95. var validation = SpreadsheetApp.newDataValidation().requireValueInRange(rangep,false).build();
  96. range.setDataValidation(validation);
  97. var rangerand = sheet.getRange("V6:V9");
  98. rangerand.setValues(valuesrand);
  99. var rangesort = sheet.getRange("U6:V9");
  100. rangesort.sort(26);
  101. var rangecap = sheet.getRange ("W6:X9");
  102. rangecap.copyTo(rangerand,{contentsOnly: true});
  103. }
  104. else if ( cell == 6 ) {
  105. sheet.insertRows(4, 16);
  106. var rangeToCopy = sh2.getRange(26, 12, 16, 24); // location of the board
  107. rangeToCopy.copyTo(sheet.getRange(4, 12)); // copies board to the season sheet
  108. var range = sheet.getRange('O6:Q11');
  109. var rangep = sheet.getRange('M21:M44');
  110. var validation = SpreadsheetApp.newDataValidation().requireValueInRange(rangep,false).build();
  111. range.setDataValidation(validation);
  112. var rangerand = sheet.getRange("AF6:AF11");
  113. rangerand.setValues(valuesrand);
  114. var rangesort = sheet.getRange("AE6:AF11");
  115. rangesort.sort(32);
  116. var rangecap = sheet.getRange ("AG6:AH11");
  117. rangecap.copyTo(rangerand,{contentsOnly: true});
  118. }
  119. else if ( cell == 8 ) {
  120. sheet.insertRows(4, 20);
  121. var rangeToCopy = sh2.getRange(42, 12, 20, 24); // location of the board
  122. rangeToCopy.copyTo(sheet.getRange(4, 12)); // copies board to the season sheet
  123. var range = sheet.getRange('O6:Q13');
  124. var rangep = sheet.getRange('M25:M56');
  125. var validation = SpreadsheetApp.newDataValidation().requireValueInRange(rangep,false).build();
  126. range.setDataValidation(validation);
  127. var rangerand = sheet.getRange("V6:V13");
  128. rangerand.setValues(valuesrand);
  129. var rangesort = sheet.getRange("U6:V13");
  130. rangesort.sort(26);
  131. var rangecap = sheet.getRange ("W6:X13");
  132. rangecap.copyTo(rangerand,{contentsOnly: true});
  133. }
  134. else if ( cell == 9 ) {
  135. sheet.insertRows(4, 20);
  136. var rangeToCopy = sh2.getRange(62, 12, 20, 24); // location of the board
  137. rangeToCopy.copyTo(sheet.getRange(4, 12)); // copies board to the season sheet
  138. var range = sheet.getRange('O6:Q14');
  139. var rangep = sheet.getRange('M25:M60');
  140. var validation = SpreadsheetApp.newDataValidation().requireValueInRange(rangep,false).build();
  141. range.setDataValidation(validation);
  142. var rangerand = sheet.getRange("AF6:AF14");
  143. rangerand.setValues(valuesrand);
  144. var rangesort = sheet.getRange("AE6:AF14");
  145. rangesort.sort(32);
  146. var rangecap = sheet.getRange ("AG6:AH14");
  147. rangecap.copyTo(rangerand,{contentsOnly: true});
  148. }
  149. else if ( cell == 12 ) {
  150. sheet.insertRows(4, 23);
  151. var rangeToCopy = sh2.getRange(82, 12, 23, 24); // location of the board
  152. rangeToCopy.copyTo(sheet.getRange(4, 12)); // copies board to the season sheet
  153. var range = sheet.getRange('O6:Q17');
  154. var rangep = sheet.getRange('M28:M75');
  155. var validation = SpreadsheetApp.newDataValidation().requireValueInRange(rangep,false).build();
  156. range.setDataValidation(validation);
  157. var rangerand = sheet.getRange("AF6:AF17");
  158. rangerand.setValues(valuesrand);
  159. var rangesort = sheet.getRange("AE6:AF17");
  160. rangesort.sort(32);
  161. var rangecap = sheet.getRange ("AG6:AH17");
  162. rangecap.copyTo(rangerand,{contentsOnly: true});
  163. }
  164. else if ( cell == 16 ) {
  165. sheet.insertRows(4, 30);
  166. var rangeToCopy = sh2.getRange(105, 12, 30, 24); // location of the board
  167. rangeToCopy.copyTo(sheet.getRange(4, 12)); // copies board to the season sheet
  168. var range = sheet.getRange('O6:Q21');
  169. var rangep = sheet.getRange('M35:M98');
  170. var validation = SpreadsheetApp.newDataValidation().requireValueInRange(rangep,false).build();
  171. range.setDataValidation(validation);
  172. var rangerand = sheet.getRange("V6:V21");
  173. rangerand.setValues(valuesrand);
  174. var rangesort = sheet.getRange("U6:V21");
  175. rangesort.sort(26);
  176. var rangecap = sheet.getRange ("W6:X21");
  177. rangecap.copyTo(rangerand,{contentsOnly: true});
  178. }
  179. else if ( cell == 18 ) {
  180. sheet.insertRows(4, 32);
  181. var rangeToCopy = sh2.getRange(135, 12, 32, 24); // location of the board
  182. rangeToCopy.copyTo(sheet.getRange(4, 12)); // copies board to the season sheet
  183. var range = sheet.getRange('O6:Q23');
  184. var rangep = sheet.getRange('M37:M108');
  185. var validation = SpreadsheetApp.newDataValidation().requireValueInRange(rangep,false).build();
  186. range.setDataValidation(validation);
  187. var rangerand = sheet.getRange("AF6:AF23");
  188. rangerand.setValues(valuesrand);
  189. var rangesort = sheet.getRange("AE6:AF23");
  190. rangesort.sort(32);
  191. var rangecap = sheet.getRange ("AG6:AH23");
  192. rangecap.copyTo(rangerand,{contentsOnly: true});
  193. }
  194. else if ( cell == 21 ) {
  195. sheet.insertRows(4, 35);
  196. var rangeToCopy = sh2.getRange(167, 12, 35, 24); // location of the board
  197. rangeToCopy.copyTo(sheet.getRange(4, 12)); // copies board to the season sheet
  198. var range = sheet.getRange('O6:Q26');
  199. var rangep = sheet.getRange('M40:M123');
  200. var validation = SpreadsheetApp.newDataValidation().requireValueInRange(rangep,false).build();
  201. range.setDataValidation(validation);
  202. var rangerand = sheet.getRange("AF6:AF26");
  203. rangerand.setValues(valuesrand);
  204. var rangesort = sheet.getRange("AE6:AF26");
  205. rangesort.sort(32);
  206. var rangecap = sheet.getRange ("AG6:AH26");
  207. rangecap.copyTo(rangerand,{contentsOnly: true});
  208. }
  209. else if ( cell == 24 ) {
  210. sheet.insertRows(4, 38);
  211. var rangeToCopy = sh2.getRange(202, 12, 38, 24); // location of the board
  212. rangeToCopy.copyTo(sheet.getRange(4, 12)); // copies board to the season sheet
  213. var range = sheet.getRange('O6:Q29');
  214. var rangep = sheet.getRange('M43:M138');
  215. var validation = SpreadsheetApp.newDataValidation().requireValueInRange(rangep,false).build();
  216. range.setDataValidation(validation);
  217. var rangerand = sheet.getRange("AF6:AF29");
  218. rangerand.setValues(valuesrand);
  219. var rangesort = sheet.getRange("AE6:AF29");
  220. rangesort.sort(32);
  221. var rangecap = sheet.getRange ("AG6:AH29");
  222. rangecap.copyTo(rangerand,{contentsOnly: true});
  223. }
  224. }
  225.  
  226.  
  227.  
  228. function Autoscore() {
  229. // To use, click on the clock to set up a minutes trigger
  230. // Don't forget to turn off the trigger once the tourney is complete!
  231. var ss = SpreadsheetApp.getActiveSpreadsheet(); // sets active book
  232. var sheet = ss.getSheets()[5]; // assumes the season sheet is on index 5, or 6 from the left
  233. sheet.getRange('l2').setValue('=K1'); // temp switcher value
  234. Utilities.sleep(200); // used to force refresh of IMPORTHTML
  235. sheet.getRange('l2').setValue('=L1'); // sets back to default
  236. }
Add Comment
Please, Sign In to add comment