Delivery
Putting the tool on somebody else's machine turned out to be harder than building it.
Every problem that didn’t exist while I used it alone appeared when it went to the team. The code is identical and some machines just don’t run it.
A setup script instead of a setup document
I started with a guide document. And exactly the thing this widget exists to fix happened — a document has to be read, and nobody reads it.
So it became a setup script. Run it and every item prints OK or NG, and an NG says what to fill in and how. You run it until everything is OK.
Writing “put this file here” in a document and having a script say “this file is missing” do not reach people at the same rate. The first requires the reader to compare it against their own state; in the second, the comparison is already done.
Credentials are not shared
When a teammate runs it, they supply their own account’s token. It does not run on one shared service account.
Which means somebody without read access to the sheet sees no data. That is intended, not a bug — the widget must never become a channel for seeing things you aren’t permitted to see.
A shared account would have made setup far easier: hand out one token and you’re done. But then everything anyone looked at collapses into that one account, and there’s no way to revoke access later.
Per-person credentials do add one more setup step — which is part of why the script above was needed.
What is shared and what is personal
Making the boundary explicit is what makes the instructions short.
| Who provides it | |
|---|---|
| App auth key | Shared — obtained once |
| Notification · deploy tokens | Shared — team resources |
| Issue tracker account | Personal — your own |
| Sheet read access | Personal — has to be on your account |
Putting that table at the top of the document halved the questions on its own. Without it you get “send me the token,” and which token isn’t attached to it.
And shared tokens carry an explicit do not commit these note. Personal config files have to stay outside the repository, and left unsaid, somebody will always commit them for convenience.