omni_dev/drive/sheets.rs
1//! Google Sheets API (v4) integration — reading and writing spreadsheet
2//! *cells*, which the Drive API structurally cannot do (issue #1589,
3//! [ADR-0073](../../docs/adrs/adr-0073.md)).
4//!
5//! Drive treats a Sheet as an opaque native document: `files.export` renders
6//! it to a foreign format and a media `files.update` replaces the whole
7//! document by re-importing one. There is no Drive-level notion of a range,
8//! a row or a cell, which is why [ADR-0069](../../docs/adrs/adr-0069.md) can
9//! only export the *first* sheet as CSV and why
10//! [ADR-0071](../../docs/adrs/adr-0071.md) §9 has `drive edit` refuse
11//! Google-native documents outright.
12//!
13//! Lives under `src/drive/` rather than a top-level `src/sheets/` for two
14//! reasons, one of them load-bearing: it shares the account store,
15//! `DriveCredentials`, token refresh and the `drive` commit scope; and
16//! `FilesApi`'s mutating methods are `pub(in crate::drive)` — the visibility
17//! fence that makes "no gate bypass" true by construction rather than by
18//! convention. A sibling top-level module could not call them without
19//! widening that fence.
20
21pub mod a1;
22pub mod api;
23pub mod auto_fill;
24pub mod banding;
25pub mod cell_format;
26pub mod client;
27pub mod conditional_format;
28pub mod create;
29pub mod date_value;
30pub mod delete_duplicates;
31pub mod developer_metadata;
32pub mod dimension_group;
33pub mod embedded_object;
34pub mod filter;
35pub mod find_replace;
36pub mod format;
37mod grid_range;
38// Re-exported (not the whole module) so the CLI layer's list verbs can
39// render a `GridRange`/resolve a sheet title without every other
40// `grid_range` internal (A1 parsing, `resolve_grid_range`, …) becoming
41// reachable outside the engine layer.
42pub(crate) use grid_range::{render_grid_range, sheet_title_by_id};
43pub mod named_range;
44pub mod paste;
45pub mod pivot;
46pub mod protection;
47pub mod randomize_range;
48pub mod read;
49pub mod sort_range;
50pub mod structure;
51mod target_gate;
52pub mod text_to_columns;
53pub mod trim_whitespace;
54pub mod types;
55pub mod validation;
56pub mod write;