Add rows at the end of a log sheet that Well keeps in the Well folder of the workspace's connected Google Drive. Call it when the user asks to log, record or add rows to a Google Sheet.
Well can write only to a sheet it created in its own Drive folder. `sheet_name` names that sheet: the first call with a new name creates it in the Well folder, and every next call with the same name adds rows to the same sheet. Well cannot write to a sheet the user made or picked: say so and offer a Well log sheet instead.
Pass `rows`: one array of cells per row, in column order. Every cell is stored as typed; a value that starts with "=" stays text. The user confirms on a card before the rows are added.
When each row carries an id that names it, such as a transaction id, pass `key_column`: the number of the column that holds the id, 1 for column A. Well then reads that column of the sheet and adds only the rows whose id is not in it yet, and a row whose id repeats an earlier row of the same call is added once. So a repeated call, or a call whose window overlaps an earlier one, adds each row once. Two calls at the same moment on the same sheet can both add a row with the same id. The result gives `rows_appended` and `rows_skipped`, the rows left out because their id was in the sheet or earlier in the call. `outcome: "already_logged"` means every row was already in the sheet: it is a success, and no row was added. `outcome: "too_many_rows_to_check"` means the sheet holds more than 20000 rows, empty rows included, so Well cannot check it: no row was added, so offer a sheet with a new name. Without `key_column`, each call adds its rows once more, so never repeat a call that returned `appended`.
Only the member who connected Google Drive can write to it; a call by another member returns `outcome: "not_connection_owner"`. When the caller connected several Drive accounts, the call returns `outcome: "connection_choice_needed"` with `workspace_connector_ids`: ask which one, then call again with `workspace_connector_id`.
Tell the user the `message` the result carries and give `web_view_link` when present. On `needs_reconnect`, ask the user to reconnect Google Drive. On `unconfirmed`, ask the user to check the sheet before a new try.
When the token authorizes one workspace, call this directly — no workspace call is needed first. When it authorizes several, this read will not guess which one you mean: pass `workspace_id` on the call.