Swiss Tournament System Guide

VERSIONAugust 2026 v9 PLATFORMGoogle Sheets / Apps Script CONTACTtd@sydneybackgammonclub.org.au

1System Overview

The SBC Swiss Tournament System is a Google Sheets-based application that automates the pairing, scoring and ranking of Swiss-format backgammon tournaments. It is operated entirely through a custom menu and requires no programming knowledge.

How It Works

A master Template spreadsheet contains all formatting and scripts. Each month, a new tournament sheet is created from this template. The director enters player names, runs each round through the menu, enters scores, and the system handles all pairing, ranking and tiebreaker calculations automatically.

Swiss Format Explained

In a Swiss tournament, players are never eliminated — everyone plays every round. After each round, players are re-ranked by wins and paired with opponents of similar standing. The final winner has the most wins; point differential is the first tiebreaker, and Buchholz (strength of schedule) is the final tiebreaker if players are still tied on both wins and differential.

Key Features

FeatureDescription
Swiss PairingPlayers paired by ranking after each round, with rematch avoidance across all previous rounds.
9 to 32 PlayersSwiss format requires at least 9 players. For smaller groups, a round robin is more suitable. Maximum 32 players.
Round 1 DrawWhen the tournament sheet first opens, you choose the draw type — straw (bag draw, director enters Column B numbers) or rank (system fills Column B from ANZBGF ratings as each name is selected). Fold or top-vs-top pairing style for rank draws.
Bye HandlingOdd player counts handled automatically — lowest-ranked player without a bye is assigned one each round.
No RematchesPairing avoids rematches across all previous rounds including Round 4. In the rare case where a rematch is unavoidable, that pairing is flagged red.
Live WebsiteStandings can be published to the SBC website in real time. SBC ONLY
PDF ExportFinal results saved as a PDF to Google Drive.
ANZBGF ExportCompleted results exported as a CSV for upload to the ANZBGF national ratings.
Status BarBlue/gold bar on the sheet always shows the next required step.

The Sheet Layout

  • Round 1 — Draw/Rank, Players D, Scores F, +/- G
  • Round 2 — R2 Ranking I, Scores K, +/- L
  • Round 3 — R3 Ranking N, Scores P, +/- Q
  • Round 4 — R4 Ranking S, Scores U, +/- V
  • Winners — Final Ranking W, Wins X, T/Diff Y (renamed B’holz if Buchholz tiebreaker applied)
Hidden Columns
Several columns are hidden by default (A, C, E, H, J, M, O, R, T). These contain draw numbers and pair sums used by the pairing algorithm. Do not manually edit these columns.

2First-Time Permissions Setup

The first time any user runs a script function from a tournament sheet on their Google account, Google displays a permissions authorisation screen. This is a standard security feature and is completely normal.

This only happens once per account per sheet
Once authorised, you will not see this popup again for that sheet on that account. A new tournament sheet will require authorisation once.

How to Authorise

  1. Tick the Select all checkbox at the top to tick all three boxes.
  2. Scroll down and click Continue.
  3. Google may show a second confirmation screen — click Allow.
  4. You will be returned to the sheet and the function will run normally.

What if Google Shows an “Unverified App” Warning?

  1. Click Advanced (bottom left of the warning screen).
  2. Click “Go to Swiss Tournament Scripts (unsafe)”.
  3. Continue with the normal authorisation steps above.
Is it safe?
Yes — this warning simply means the scripts have not been through Google’s formal app review process, not that they are harmful. The scripts were written specifically for SBC tournament management.

3Managing the Members Sheet

The Members sheet is a separate Google Spreadsheet containing all current financial members — the source for player dropdowns in every tournament sheet. Player names are in Column A from row 2. No blank rows between names — a blank row stops the list being read.

TaskSteps
Add a memberOpen Members sheet → type name at the bottom of Column A → Save (Ctrl+S).
Remove a memberRight-click their row number → Delete row (do NOT just clear the cell — leaves a blank row).
Refresh dropdownsAfter any Members change, open the tournament sheet and run 🔄 Refresh Player Dropdowns.

ANZBGF Ranking Column (for rank draws)

Column D of the Members sheet, headed ANZBGF Ranking, holds each player’s rating — used only if you choose a rank draw for Round 1 (see Section 5). Type each rated player’s number in, and leave it blank for anyone unrated. Ratings come from the club’s page at results.anzbgf.org — open it in a browser and copy the numbers across from time to time (they change slowly). Players left blank are handled by the unrated rule you choose at draw time.

Day Before Tournament Checklist

  • Members sheet up to date — new members added, lapsed members removed.
  • New tournament sheet created from template (Section 4) and header is correct.
  • Player dropdowns working — click Column D and confirm dropdown appears.
  • Google permissions authorised on the device being used (Section 2).
  • Draw tokens prepared if you use a bag draw — or set the draw from the menu with 🎲 Set Round 1 Draw (Section 5).

4Creating a New Tournament

All tournaments are created from the master Template. Never run a tournament directly in the template — always create a new sheet first. Swiss format is always four rounds and requires at least 9 players.

  1. Open the Swiss Tournament Template from Google Drive.
  2. Click 🏆 Swiss Tournament menu → 🆕 Create New Tournament.
  3. If prompted, complete the Google permissions authorisation (see Section 2).
  4. A date picker dialog appears — select the tournament date from the calendar and click OK.
  5. Enter the points per match when prompted — type 3, 5, 7, 9 or 11.
  6. Wait approximately 10 seconds while the sheet is created.
  7. Click Open Tournament → in the confirmation dialog to open the new sheet.
What gets created automatically
The new sheet will have a two-line header showing the date and format (e.g. 29TH AUGUST ’26 TOURNAMENT / FOUR ROUNDS OF 7 POINTS), player dropdowns loaded from the Members sheet, the status bar showing the first step, and all formatting ready to go.

5Tournament Day Workflow

The status bar (blue/gold bar near the top of the sheet) always shows the next required step. If unsure, click ▶ What’s Next? at the top of the Swiss Tournament menu.

Step 1 — Draw Type Setup (happens when the sheet first opens)

When the tournament sheet opens for the first time, a setup dialog appears automatically asking how you want to run the Round 1 draw. Answer the prompts — your choices are saved to the sheet and used when Round 1 is run.

PromptChoices
Draw type1 = Straw draw — players draw tokens from a physical bag; the director enters the numbers in Column B manually before running Round 1. 2 = By rank — the system reads each player’s ANZBGF rating from the Members sheet and fills Column B automatically as each name is selected from the dropdown.
Pairing style
(rank only)
1 = Fold — top half plays bottom half, keeping strongest players apart until later rounds. 2 = Top vs top — the two highest-rated players meet in Round 1.
Unrated players
(rank only)
1500 seeds them mid-field; 0 seeds them last.
Who gets the bye
(rank only)
H = Highest-ranked player, L = Lowest-ranked, R = Random.

Step 2 — Enter Players and Set Draw Numbers

  1. In Column D, use the dropdown in each row to select each player’s name.
  2. If there is an odd number of players, select Bye as the last entry in Column D.
  3. Follow the steps for your chosen draw type below.

Rank Draw — Column B fills automatically

As each player name is selected from the Column D dropdown, their ANZBGF rating is written to Column B automatically. Unrated players receive the default value you chose (1500 or 0). Once all names are entered, proceed directly to 1️⃣ Round 1 — the system applies the fold or top-vs-top ordering and pairs players.

Straw Draw — Director enters Column B

  1. Run the physical bag draw — each player draws a numbered token.
  2. Run 👀 Unhide Columns to reveal Column B.
  3. Enter each player’s token number in Column B next to their name.
  4. Leave the Bye row in Column B blank — the system automatically assigns it the next number after the highest player number when Round 1 is run.
  5. Run 🙈 Hide Columns to restore the standard view.
  6. Proceed to 1️⃣ Round 1.
Late arrivals and withdrawals
Late arrival before Round 1: add them in Column D (their rating fills Column B automatically for a rank draw; enter their token number manually for a straw draw). Late arrival after Round 1: cannot join. Player withdraws mid-tournament: leave their rows blank — do not delete the row.

Steps 2–6 — Round 1

  1. Click 1️⃣ Round 1 — sorts players by draw number and pairs 1st vs 2nd, 3rd vs 4th, etc.
  2. Enter each player’s score in Column F. Do not enter scores in greyed-out cells.
  3. Click 📊 Calculate R1 +/- — calculates point differentials in Column G.
  4. Click 🏅 Calculate R1 Wins — records wins and differentials in Columns W/X/Y.
  5. Click 📊 Sort Players for R2 — sorts by wins then differential.
Rounds 2, 3 and 4 follow the same pattern
Run Round → Enter Scores → Calculate +/- → Calculate Wins → Sort for Next Round.

Full Round Sequence — Rounds 2, 3 and 4

StepMenu ItemWhat It Does
12️⃣ Round 2Generates R2 pairings, avoiding any rematch from Round 1.
2Enter scores in Column K.
3📊 Calculate R2 +/-Calculates differentials in Column L.
4🏅 Calculate R2 WinsUpdates cumulative wins/differentials in W/X/Y.
5📊 Sort Players for R3Sorts by wins then diff, updates ranking header.
63️⃣ Round 3Generates R3 pairings, avoiding rematches from Rounds 1–2.
7Enter scores in Column P.
8📊 Calculate R3 +/-Calculates differentials in Column Q.
9🏅 Calculate R3 WinsUpdates cumulative wins/differentials in W/X/Y.
10📊 Sort Players for R4Sorts by wins then diff, updates ranking header.
114️⃣ Round 4Generates R4 pairings, avoiding rematches across Rounds 1–3 (see Section 6).
12Enter scores in Column U.
13📊 Calculate R4 +/-Calculates differentials in Column V.
14🏅 Calculate R4 WinsUpdates cumulative wins/differentials in W/X/Y.
15🏆 Sort WinnersFinal sort — removes Bye, updates header to Winners.

Rematch Avoidance

When Round 2, 3 or 4 is run, the system automatically pairs players to avoid any rematch from earlier rounds. No player is ever paired with someone they have already played, unless the field makes it mathematically unavoidable — in which case that single pairing is highlighted red and noted in the completion message. A clean draw shows no highlighting. If a red-flagged rematch appears and you want to choose which players take the repeat, use Manual Sort (Section 7) before running the round.

6Round 4 & the Championship Match

Round 4 is generated the same way as Rounds 2 and 3 — the system finds the pairing that avoids every prior rematch across all three earlier rounds. No two players ever play twice.

When the top two players are both undefeated going into Round 4, they have provably never met (an undefeated player cannot have lost, so two 3–0 players cannot have played each other). They are therefore paired together for the title automatically — the championship final emerges on its own, with no special handling needed.

In the rare case where pairing the top two would force a rematch elsewhere in the field, the leader is instead paired with the next-ranked fresh opponent, and any genuinely unavoidable rematch is flagged red. This keeps the guiding rule intact: every game, including the final, is a first meeting wherever the field allows it.

Re-running Round 4
To re-run Round 4, click 🗑️ Clear Round 4 first, then run 4️⃣ Round 4 again.

7Manual Sort — Overriding Pairings

If the automatically generated pairings are not suitable — for example, to choose which players take a red-flagged unavoidable rematch — Manual Sort allows the director to override the ranking order before running a round.

Use Manual Sort BEFORE running the Round
Manual Sort changes Column W order which is read by the Round function. If you have already run the round, use Clear Round 4 (for Round 4) or re-run the sort functions first.
  1. Click ✏️ Manual Sort → select the appropriate round (R2, R3 or R4).
  2. A dialog box appears with all players listed in current ranking order.
  3. Drag and drop player names to set your preferred order. Players are paired top-to-bottom: rows 1+2, 3+4, etc. Pair labels update as you drag.
  4. Click OK to apply the new order, then run the appropriate Round function.

8Understanding the Bye

When there is an odd number of players, enter “Bye” as the last player in Column D. The system handles everything automatically.

  • The lowest-ranked player who has not yet had a bye is assigned one each round.
  • The bye recipient automatically receives the target score (e.g. 7) — no manual entry needed.
  • The bye recipient automatically receives 1 win and 0 point differential.
  • The bye recipient’s +/- cell and the Bye row’s score and +/- cells are greyed out and protected.
  • No player receives the bye more than once across the tournament.
  • Bye does not appear in the final Winners rankings.
Round 1 bye
For Round 1 you can choose who takes the bye when you run 🎲 Set Round 1 Draw — highest, lowest or random rank (a straw draw assigns it automatically to the player who draws the highest number). From Round 2 on, the system assigns the bye itself as described above.

9Publishing Results

Sort Winners

Click 🏆 Sort Winners after Calculate R4 Wins. Produces final rankings sorted by wins then point differential. Bye is automatically excluded.

After sorting, a prompt asks whether to apply the Buchholz tiebreaker. If you click Yes, the system calculates each player’s Buchholz score — the sum of their opponents’ final win totals, with average substitution for any bye round — and re-sorts players who are tied on both wins and point differential. Column Y is renamed B’holz and shows each player’s score. The tiebreaker chain is: Wins → Point Differential → Buchholz. Click No to leave the results as sorted by wins and differential.

What is Buchholz?
Buchholz measures the strength of the opponents you faced. A player who beat strong opponents (who finished with many wins) scores higher than one who beat weaker opponents — even if both ended with the same wins and differential. For bye rounds, the average of the player’s real opponents’ wins is substituted, so receiving a bye is not penalised unfairly.

Save as PDF

  1. Click 📄 Save as PDF.
  2. PDF saved to the same Google Drive folder as the tournament sheet, named automatically e.g. 29th August ’26 Tournament Results.pdf.

Send to Website SBC ONLY

  1. Click 🌐 Send to Website.
  2. Standings sent to sydneybackgammonclub.org.au/live/ immediately.
  3. Can be sent after any round for live updates between rounds.

Clear Website SBC ONLY

To remove standings from the website between tournaments, click 🗑️ Clear Website.

10Buchholz Tiebreaker

When two or more players finish with the same number of wins and the same point differential, the system applies the Buchholz tiebreaker to determine final placings. This happens automatically when you click Yes at the Buchholz prompt after Sort Winners.

What is Buchholz?

Buchholz measures the strength of your opponents. Each player’s Buchholz score is the sum of the final win totals of everyone they played across the tournament. A player who beat strong opponents — those who went on to win many matches — scores higher than one who beat weaker opponents, even if both ended with the same wins and differential. It rewards a tough schedule.

The Tiebreaker Chain

PriorityTiebreakerHow it works
1stWinsMost wins ranks highest. Applied first, always.
2ndPoint DifferentialIf wins are equal, the player who won by the biggest margin overall ranks higher.
3rdBuchholzIf wins AND differential are both equal, the player who faced the stronger field ranks higher.

Bye Round Adjustment

A player who received a bye in Round 1 did not play a real opponent in that round, so they cannot accumulate a Buchholz score for it. To avoid penalising them unfairly, the system substitutes the average of their other opponents’ wins for the bye round. This keeps all players’ Buchholz scores comparable across four rounds regardless of whether they had a bye.

Worked Example — 29th August ’26 Test Tournament

The following example uses a real test tournament run to demonstrate the system. It shows three players finishing level on both wins and differential, and how Buchholz separates them.

After Sort Winners, the standings showed three players all on 3 wins and +8 differential — a genuine three-way tie that wins and differential alone could not resolve:

This is a test tournament
The player names and results below are from a test run of the system, not a real club tournament.

Before Buchholz — three players tied on 3 wins / +8:

Winners column before Buchholz applied

The director clicked Yes to apply Buchholz. The system calculated each tied player’s score by looking up who they played and how many wins those opponents finished with:

PlayerOpponents (final wins)Buchholz
Hammon MansJohn Hedge (3) + Andrew Dale (2) + Achmat Davids (2) + Foad Vand Rajab pour (3)10
James WilsonBye (avg sub: 2) + David Burman (1) + Foad Vand Rajab pour (3) + Achmat Davids (2)8
John HedgeHammon Mans (3) + John Harris (1) + Brett Connable (1) + Andrew Dale (2)7

Hammon Mans faced the strongest field and wins the tiebreak. James Wilson received a bye in Round 1 — the system substituted 2 (the average of his other three opponents’ wins) for that round, placing him second. John Hedge faced the weakest set of opponents among the three and places third.

After Buchholz — column Y renamed to B’holz, scores displayed, players correctly ordered:

Winners column after Buchholz applied

What About Players Outside the Tie?

Notice that Foad Vand Rajab pour also finished on 3 wins but with a differential of +7 (not +8). Because his differential differed from the tied three, he was already separated by the second tiebreaker and Buchholz did not affect his position. However his Buchholz score of 11 — higher than Hammon’s 10 — is correctly shown in the B’holz column. This is not an error: Foad happened to play three players who all finished on 3 wins (Hammon, James and Steve Dafnakis), giving him the toughest schedule in the field. He was just one point of differential short of sharing first place. Had his margin against any one of those opponents been one point greater, his differential would have been +8 and Buchholz would have put him first outright.

Buchholz is optional
The director chooses whether to apply Buchholz after each tournament. If there are no ties on wins and differential, clicking Yes still calculates and displays each player’s Buchholz score in column Y for interest — but the order does not change. Clicking No leaves the results sorted by wins and differential only.

Once a tournament is complete, the system can produce a results file (CSV) for the ANZBGF national ratings at results.anzbgf.org. The file is saved to Google Drive for you to upload — nothing is sent automatically, so you always get a chance to check it first.

  1. With the completed tournament sheet open, click 🏆 Swiss Tournament menu → 📤 Export ANZBGF CSV.
  2. If prompted, complete the Google permissions authorisation (see Section 2) — the export needs Drive access to save the file.
  3. Enter the tournament date when asked, in YYYY-MM-DD format — e.g. 2026-09-06. Leave the box blank to use the first Saturday of the current month.
  4. The system saves a file named ANZBGF_[date].csv in the same Drive folder as the tournament sheet, and shows a summary: how many matches were written, any rows skipped, and the full list of player names in the file.
  5. Upload that CSV at results.anzbgf.org.
Check player names before uploading
Names must match the existing spelling on results.anzbgf.org exactly. A name that does not match is treated as a brand-new player and registered at a starting rating of 1500 — so “Dave Smith” and “David Smith” become two different people. Use the name list in the export summary to check spellings, correct any mismatch in the Members sheet, and re-run before uploading.
What gets included
Byes are left out automatically — a bye is not a played match, so it is not rated. Each match is written once, with the winner’s score equal to the match length. Any round that looks incomplete or has an odd score is skipped and listed in the summary rather than uploaded.

12Troubleshooting

ProblemSolution
Don’t know what to do nextClick ▶ What’s Next? or read the status bar at the top of the sheet.
Player missing from dropdownCheck Members sheet for the name and any blank rows. Run 🔄 Refresh Player Dropdowns.
Two players paired who already playedIf not flagged red, the draw is clean. If a red-flagged rematch is unavoidable and you want a different pairing, use ✏️ Manual Sort to drag players into a valid order before re-running the round.
Draw setup dialog didn’t appear when the sheet openedThe sheet may have been opened before — the dialog only appears once. Close the sheet, clear cell Z17 (unhide Column Z, delete the value in Z17, rehide), then reopen.
Rank draw not filling Column B automaticallyThe ANZBGF Ranking column (D) in the Members sheet may be empty — players will get the unrated default you chose. Check the Members sheet and add ratings (Section 3).
Column B has wrong numbers for a straw drawFor a straw draw, Column B must be filled manually by the director — the system does not generate numbers. Enter each player’s token number from the bag draw.
Buchholz scores look wrongBuchholz is calculated from the pair-sum columns which record who played whom. If scores were entered incorrectly and corrected after the fact, re-run the Calculate Wins functions before running Sort Winners again.
Duplicate player error when running Round 1A player name appears more than once in Column D. Check for duplicates, remove the extra entry, and run Round 1 again.
Ran the wrong functionFor Round 4: use 🗑️ Clear Round 4. For earlier rounds: File → Version history → See version history to restore.
Sheet looks wrong after two devicesAvoid having the sheet open on more than one device simultaneously. Use version history to restore if needed.
Google permissions popup appeared againNormal for a new sheet or account. Follow the authorisation steps in Section 2.
Columns look wrongRun 🙈 Hide Columns to restore standard view, or 👀 Unhide Columns to show all columns.
Score entered incorrectlySimply retype the correct score in the cell, then re-run the Calculate +/- and Calculate Wins functions for that round.
Player name has a typo in Column DClick the cell and select the correct name from the dropdown. Re-run the Round function to regenerate pairings if the round has already been run.
ANZBGF export created a duplicate player at 1500A name that doesn’t match the spelling on results.anzbgf.org exactly registers as a new player at 1500. Check the name list shown in the export summary, correct the spelling in the Members sheet, and re-run 📤 Export ANZBGF CSV before uploading.
Export ANZBGF CSV won’t run or is missingRe-authorise Drive access (Section 2). If the menu item is absent, the sheet’s SwissEngine library needs updating to the current version — contact the Tournament Director.
Send to Website not workingCheck internet connection. Ensure Sort Winners or a sort function has been run so Column W has data. Try again. SBC ONLY
PDF save failsEnsure you have sufficient Google Drive storage. Check the script has Drive permissions (re-authorise if needed).
Contact
For issues not covered here, contact the Tournament Director at td@sydneybackgammonclub.org.au