A Google Sheets™ add-on that adds an additional menu, to help generate tournament brackets (2 parties playing against each other per game) for specific parties.
Try it out:
Install add-on from Google Marketplace.
Create a new sheet.
Use "Extensions" -> "Tournament Extension" -> "Create Default Options".
Put all participants under the "Participants" column.
(optional) Select them, then right click -> more cell actions-> Randomize range.
Use "Extensions" -> "Tournament Extension" -> "Create Tournament".
Create a default "options" sheet, containing example template values for the tournament creation.
If you prefer minimum text and features, use “Create minimal options” instead
Create a tournament (two parties compete against each other, until only one remains):
the winners are automatically propagated to their next match when they have the higher score
list and randomize all involved participants / parties
a "placeholder" (a.k.a. "N/A") is added when number of participants isn't a power of two. This means not everyone will have the exact same number of matches.
Note: if you wish to create another tournament, just rename the sheet
Easy management:
Clear view which matches are done, pending, and aren’t ready yet.
Clear view of how many matches were played and remain.
(optional) Clear view of matches exceeding their deadline.
Easy match regeneration (e.g., in case the template needs to change for multiple tournament sheets).
Advanced:
Double knockout mode: The losing party joins a "condolence house", to compete for the 3rd place.
Customizable score cell template: Choose however you want your score cells to look like (e.g., font size, color, data validation, dropdowns, number format, etc.). The only requirement is that there's a meaning to compare size (i.e., "larger than") between two scores. Known workable formats:
numbers
dates/times
strings/texts
checkboxes
Everything under "options" is customizable.
Optional: Add deadlines (dates and/or times) to each match. Deadlines are computed by dependent deadlines, using the "delta" (i.e., the time-difference).
Manually updating a deadline will affect future deadlines as well (easy to estimate when the tournament should end).
When someone first updates their scores, and the deadline is "in the past", the date will be automatically updated to reflect the estimated end-time of the tournament.
Additional tips:
Colors show if a match is pending, already played, or still depends on previous matches.
Colors show if the deadline is close or getting there.
There's a "summary" section containing:
who are the winners
matches played out of total matches (discluding all "placeholder" matches).
You can recreate a tournament, keeping the same participants (and match orders), match scores and deadlines that were manually updated, but changing other things from the "options" like deadline settings and score cell format (but note the previous value remains - this might cause issues when switching from a checkbox to a numeric).
Who is this suitable for?
Anyone who plans to organize a knockout tournament/competition that has 2 parties (participants or teams) competing against each other in each match (e.g., Ping-pong, Foosball, Basketball, etc.).
This will be extremely helpful for managing results and match deadlines.
Check out the demos:
Installation:
Note that using the script requires permissions (*).
You have 2 options of installation:
(recommended) Add it as an add-on (see app on Google Marketplace). Follow the instructions on the extension's "help" menu.
Copy the Bracket tournament generator - skeleton - free document and follow the instructions to use the script.
(*) The script requires permissions as it changes the spreadsheet you're working on (the script is contained to this spreadsheet/document only, but it creates new sheets within it).
If you have issues finding the extension:
Wait until "Extensions" -> "Tournament Extension" menu appears. Then click "Create default options". Allow permissions when prompted.
If it doesn't appear after a few seconds, reload the page and wait a few more seconds.
If the menu still does not appear, go to "Extensions" -> "App Scripts". The menu should then appear. If it doesn't, click "Run" on the App Scripts. Allow permissions when prompted.
If the script just fails due to permissions, and you're not prompted at all to allow access to the script, you can create a new spreadsheet (sheets.new) with copying the script. Then reload the page and start again from (1).
After allowing script permissions, use "Create default options" and follow the "Instructions / How to use" it generates.
The data is used only for the purposes and features of this script.
The data is not stored or viewed in any way by the script's creator. It is only stored by Google as per App Script's and Google Sheets's™ functionalities and privacy agreements.
Your data is not shared with anyone and should be accessible only to whomever has access to your copied spreadsheet.
The script reads the data from the spreadsheet to write it as-is on the created or updated Tournament sheet. The participants' names are stored in Google's Properties Service and are thus subject to Google's privacy policy.
The script uses (but doesn't store store, besides what's written above) the data in the Options sheet and in the current sheet in order to generate the Tournament sheet.
Some metadata is logged for debugging and monitoring, such as which features were used and the amount of participants. But no names, emails or score values.
Copyright 2022 Yorai Geffen
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.