Both Google Sheets have been restricted (link sharing turned off), but their CSV export URLs still return data. Until that stops being true, the rotation is not finished: the old IDs are checked into main and are in this repository's public history, so anyone who has ever cloned it holds a working key.
This is the endpoint that matters — the one the code actually fetches, not the /edit URL:
https://docs.google.com/spreadsheets/d/<ID>/gviz/tq?tqx=out:csv&sheet=Tests
Built in google_sheet_test_cases.py and blocklist.py.
Things to rule out, cheapest first
-
Testing while signed in as the owner. The likeliest explanation by far, and it isn't caching: the browser sends your Google cookies, and the owner can always read the document whatever the sharing setting says. The real test sends no credentials at all:
curl -sS -o /dev/null -w '%{http_code} %{size_download} bytes\n' \
"https://docs.google.com/spreadsheets/d/<OLD_ID>/gviz/tq?tqx=out:csv&sheet=Tests"
A restricted sheet answers 302 to a sign-in page (accounts.google.com), not 200 with CSV. Add -L and check where it lands. Run it in a container or with --no-cookie if there is any chance of ambient credentials.
-
"Publish to web" is a separate switch from link sharing. File → Share → Publish to web. If it was ever enabled, the document stays publicly readable through its own /pub?output=csv URL after link sharing is restricted, and the gviz endpoint may serve from that publication too. It has to be stopped explicitly ("Stop publishing"). This is the failure mode most likely to look like "caching that will sort itself out" while actually being permanent.
-
Edge caching, which is real but short. Google does serve exports through a CDN, and a previously-fetched CSV can survive a permission change for minutes. If (1) and (2) are clean, re-test after an hour before concluding anything.
-
Copies. A copy taken while the sheet was link-shared is a separate document with its own ID and its own sharing; restricting the original does nothing to it. (Drive has been checked for copies owned by the maintainer — worth remembering that a copy taken by someone else is not visible or revocable from here at all.)
Done when
curl with no credentials returns a sign-in redirect for both old IDs, on both the gviz CSV endpoint and /pub?output=csv.
Filed from the sheet-ID rotation in #117. Do not paste the old IDs into this issue or its comments — the point of the exercise is that they stop being readable, and this issue is public.
Both Google Sheets have been restricted (link sharing turned off), but their CSV export URLs still return data. Until that stops being true, the rotation is not finished: the old IDs are checked into
mainand are in this repository's public history, so anyone who has ever cloned it holds a working key.This is the endpoint that matters — the one the code actually fetches, not the
/editURL:Built in
google_sheet_test_cases.pyandblocklist.py.Things to rule out, cheapest first
Testing while signed in as the owner. The likeliest explanation by far, and it isn't caching: the browser sends your Google cookies, and the owner can always read the document whatever the sharing setting says. The real test sends no credentials at all:
A restricted sheet answers
302to a sign-in page (accounts.google.com), not200with CSV. Add-Land check where it lands. Run it in a container or with--no-cookieif there is any chance of ambient credentials."Publish to web" is a separate switch from link sharing. File → Share → Publish to web. If it was ever enabled, the document stays publicly readable through its own
/pub?output=csvURL after link sharing is restricted, and thegvizendpoint may serve from that publication too. It has to be stopped explicitly ("Stop publishing"). This is the failure mode most likely to look like "caching that will sort itself out" while actually being permanent.Edge caching, which is real but short. Google does serve exports through a CDN, and a previously-fetched CSV can survive a permission change for minutes. If (1) and (2) are clean, re-test after an hour before concluding anything.
Copies. A copy taken while the sheet was link-shared is a separate document with its own ID and its own sharing; restricting the original does nothing to it. (Drive has been checked for copies owned by the maintainer — worth remembering that a copy taken by someone else is not visible or revocable from here at all.)
Done when
curlwith no credentials returns a sign-in redirect for both old IDs, on both thegvizCSV endpoint and/pub?output=csv.Filed from the sheet-ID rotation in #117. Do not paste the old IDs into this issue or its comments — the point of the exercise is that they stop being readable, and this issue is public.