pub enum WriteResult {
Show 16 variants
WouldWrite {
rows: usize,
columns: usize,
},
WouldClear,
RefusedNotASpreadsheet {
mime_type: String,
},
RefusedShortcut,
RefusedNoVisibleParents,
RefusedSheetNotFound {
title: String,
available: Vec<String>,
},
RefusedEmptyValues,
Blocked {
decided_by: Option<DecidingRule>,
},
RefusedNoLease,
RefusedLeaseExpired,
RefusedLeaseWrongFile,
RefusedLeaseStale,
Written {
updated_range: Option<String>,
updated_rows: Option<i64>,
updated_columns: Option<i64>,
updated_cells: Option<i64>,
},
Appended {
updated_range: Option<String>,
updated_rows: Option<i64>,
updated_columns: Option<i64>,
updated_cells: Option<i64>,
},
Cleared {
updated_range: Option<String>,
},
Failed {
detail: String,
},
}Expand description
What happened (or, under --dry-run, would happen).
Variants§
WouldWrite
--dry-run of a write/append, and the gate would allow it.
Fields
WouldClear
--dry-run of a clear, and the gate would allow it. Its own
variant rather than a WouldWrite of 0 x 0: a clear takes no
values, so those dimensions would always be zero (#1941).
RefusedNotASpreadsheet
The target is not a Google Sheet. Checked client-side before the gate: writing cells into a PDF isn’t disallowed, it’s meaningless.
RefusedShortcut
The target is a shortcut. Given its own variant rather than falling
into RefusedNotASpreadsheet, because “this is not a spreadsheet” is
a confusing thing to say about a shortcut to a spreadsheet — the
same distinction drive read --content already draws.
RefusedNoVisibleParents
The target has no parents this account can see, so the gate has no
ancestor chain to evaluate — and no file_id rule named it
either, so nothing granted it.
Distinct from Blocked { decided_by: None }, which means “a chain
was resolved and no rule matched”. Conflating them would send an
operator off to fix folder rules when no folder rule they could
write would help. This is the common shape for a Sheet shared by
link or email; since issue #1612 the fix is a file_id rule, and
this variant is reached only once that lookup has come up empty.
RefusedSheetNotFound
The named sheet (from --sheet, or the range’s own Sheet! prefix)
does not exist in this workbook. Checked client-side, like
find-replace/sort-range/auto-fill/paste and friends, rather than
letting the API’s opaque “Unable to parse range” stand in for it
(#1941).
RefusedEmptyValues
write/append’s --values resolved to zero rows, so there is
nothing to write. clear takes no values and is unaffected.
Blocked
The folder write-permission gate refused it.
Fields
decided_by: Option<DecidingRule>The rule that decided the refusal, if any (None means the bare
default policy — every write defaults deny).
RefusedNoLease
No --lease was presented, and the deciding rule requires one
(ADR-0080 §9).
RefusedLeaseExpired
The presented lease has expired, or was never a token this ledger knows about.
RefusedLeaseWrongFile
The presented lease is bound to a different file id.
RefusedLeaseStale
The file has moved since the lease’s recorded version — the
staleness check (ADR-0080 §6).
Written
A write succeeded.
Every count is optional because the API may omit it.
Fields
Appended
An append succeeded. The same counts as Self::Written, under
its own status so a script can tell an append from an overwrite
(#1941).
Fields
Cleared
A clear succeeded. The API reports no counts for a clear, only
the range.
Failed
An API or validation error.
Trait Implementations§
Source§impl Clone for WriteResult
impl Clone for WriteResult
Source§impl Debug for WriteResult
impl Debug for WriteResult
impl Eq for WriteResult
Source§impl PartialEq for WriteResult
impl PartialEq for WriteResult
Source§impl Serialize for WriteResult
impl Serialize for WriteResult
impl StructuralPartialEq for WriteResult
Auto Trait Implementations§
impl Freeze for WriteResult
impl RefUnwindSafe for WriteResult
impl Send for WriteResult
impl Sync for WriteResult
impl Unpin for WriteResult
impl UnsafeUnpin for WriteResult
impl UnwindSafe for WriteResult
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more