Workspace Add-on that tracks action items inside Google Docs and aggregates them in a central spreadsheet (the ActionSheet) for cross-doc roll-up. Actions are identified by an in-text AI-N: token at the start of each checklist item, followed by a person chip (assignee) and the action text; status is a trailing parenthesized token, e.g., (Open), (Closed). Identity survives edits because the token embeds the durable AI-N prefix unique per document.
Status: Active prototype
- In any Google Doc, create a checklist item with the pattern:
AI: @name action text (Status). The scanner auto-assignsNon the next Sync (e.g.,AI-1: @name …). You may also type justAI: textand add the person chip and status later. - Open the GActionSheet sidebar (Extensions → GActionSheet) and click Sync now. The sidebar lists every action in the doc; the ActionSheet receives a row for each, identified by the
AI-Ntoken. - Edit either the floating action (doc-side) or the ActionSheet row (sheet-side). On the next Sync, changes converge: if the ActionSheet row was edited after the last sync, it wins and updates the doc paragraph; otherwise the doc's state overwrites the sheet row. The
Sync Status(Dirty) flag decides the winner per row. - Status is the trailing parenthesized token, e.g.,
(Open),(Closed), or any free-form value. If omitted, Sync adds an explicit(Open)token. - Click VerifySync to compare the doc's floating actions, the in-doc tracker table when present, and the ActionSheet rows for this document. The sidebar shows the verification steps and any mismatches it finds.
- Click Insert / refresh tracker to write a summary table into the doc, prefixed with the sync rules. The tracker is a rendered view and is overwritten on each refresh.
A timed sweep on the ActionSheet (every 30 minutes) picks up changes in docs no one opened recently. Closed actions older than 30 days are moved to an archive sheet.
- Google account with edit access to the ActionSheet and the source Docs
- clasp CLI (
npm install -g @google/clasp) - A GCP project with the Google Docs API enabled (required for paragraph rewrites and tracker-table writes via REST
batchUpdate)
One Apps Script project, container-bound to the ActionSheet spreadsheet, deployed simultaneously as a Workspace Add-on, a Docs editor add-on, and a Web App (see docs/DESIGN.md §Solution Strategy and ADR-0007):
| Surface | Purpose |
|---|---|
| Workspace Add-on / Docs editor add-on (active user) | Sidebar UI, per-doc Sync, @-menu create-action, smart-chip preview, tracker-table render |
Web App (doPost, runs as deployer) |
All ActionSheet writes — proxy for surfaces that lack direct sheet access |
| Container-bound automation (sheet owner) | onEdit timestamp/Dirty stamping, 30-min sweep, archiving |
Use the repo scripts instead of calling clasp directly:
npm install
npm run push
npm run deploy:testnpm run deploy:test pushes the Apps Script sources and repoints the TEST web-app deployment to the new revision. npm run deploy:prod does the same for production.
Use this prompt - update for current folder structure: Report → write pipeline-report.md ONLY (bdreport style):
- Headline JOIN: match the run's deployment (target + deploymentId + build) to the latest ledger entry; state green/red for the CURRENT deployment and flag if it is still untested.
- Run summary: passed/total (%), failures, errors, skipped, wall time.
- Per-suite table: tests / pass / fail / err / time.
- Failure triage by ROOT-CAUSE bucket (not raw count): Env (add-on/side-panel not installed), Harness/config (token/fixture rejected), Perf/timeout (≥ GAS 6-min ceiling), Product (logic regression). Classify each failing test.
- Deployment ledger: list each deploy as target + deploymentId + version; cadence; current deployment; time-since-last-green.
- Health flags + recommended next action. Parse from: test-results/playwright.xml + test-results/pytest.xml + deployment-ledger/test.jsonl. Note if only one run exists (no trend/flaky analysis yet).
Project is defining best practices captured in GAS-Practices for test reporting.
npm run test:report
npm run test:server
- From the Apps Script editor for the add-on, deploy as a test deployment (Deploy → Test deployments → Install). Open any Doc; the sidebar appears under Extensions → GActionSheet.
- From the Apps Script editor for the automation script, run
initializeTriggersonce to install theonEditand time-based triggers on the ActionSheet.
See docs/OPERATIONS.md for configuration details.
| Document | Purpose |
|---|---|
| CONTEXT.md | Purpose, capabilities, use cases, glossary |
| DESIGN.md | Architecture, modules, data model |
| OPERATIONS.md | Configuration, deployment, failure modes |
| ADRs | Architecture decision records |
| Worpspace-Setup | Research results on Google Workspace AddOn setup, configuration and testing |
MIT — see LICENSE for details.