OfficeIMO.GoogleWorkspace
0.1.0
Prefix Reserved
dotnet add package OfficeIMO.GoogleWorkspace --version 0.1.0
NuGet\Install-Package OfficeIMO.GoogleWorkspace -Version 0.1.0
<PackageReference Include="OfficeIMO.GoogleWorkspace" Version="0.1.0" />
<PackageVersion Include="OfficeIMO.GoogleWorkspace" Version="0.1.0" />
<PackageReference Include="OfficeIMO.GoogleWorkspace" />
paket add OfficeIMO.GoogleWorkspace --version 0.1.0
#r "nuget: OfficeIMO.GoogleWorkspace, 0.1.0"
#:package OfficeIMO.GoogleWorkspace@0.1.0
#addin nuget:?package=OfficeIMO.GoogleWorkspace&version=0.1.0
#tool nuget:?package=OfficeIMO.GoogleWorkspace&version=0.1.0
OfficeIMO.GoogleWorkspace
Shared session, credential, retry, Drive-location, and translation-report primitives for the Google Workspace extension packages.
What this package provides
IGoogleWorkspaceCredentialSourceso applications can plug in their own OAuth or service-account token acquisition.StaticAccessTokenCredentialSourcefor scenarios where the app already has a Google access token.DelegateGoogleWorkspaceCredentialSourcefor plugging in an existing token service with a single delegate.GoogleServiceAccountCredentialSourcefor built-in service-account JWT bearer exchange, including domain-wide delegation via session options.GoogleWorkspaceSessionas the shared runtime container for credentials and session defaults.GoogleWorkspaceSessionOptionsfor app identity, timeout, retry policy, and default Drive placement.GoogleDriveFileLocationfor folder, shared-drive, and existing-file targeting.TranslationReport/TranslationNoticefor export diagnostics, warnings, and retry visibility.GoogleWorkspaceExportExceptionfor failed exports that still preserveTranslationReportand a high-level failure category.GoogleWorkspaceExportCanceledExceptionfor caller-triggered cancellations that still preserveTranslationReport.ToDiagnosticEntries()helpers for turning reports and export exceptions into structured log-ready entries.GoogleWorkspaceSessionOptions.DiagnosticSinkfor streaming retry/auth/API diagnostics while an export is running.
Quick start
using OfficeIMO.GoogleWorkspace;
var session = new GoogleWorkspaceSession(
new StaticAccessTokenCredentialSource("<google-access-token>"),
new GoogleWorkspaceSessionOptions {
ApplicationName = "OfficeIMO Samples",
DefaultDriveId = "shared-drive-id",
DefaultFolderId = "reports-folder-id",
MaxRetryCount = 5,
RetryBaseDelay = TimeSpan.FromMilliseconds(250),
RetryMaxDelay = TimeSpan.FromSeconds(10),
RequestTimeout = TimeSpan.FromSeconds(120),
});
Service account JSON shortcut:
using OfficeIMO.GoogleWorkspace;
var sessionOptions = new GoogleWorkspaceSessionOptions {
SubjectUser = "analyst@example.com",
UseDomainWideDelegation = true,
DefaultFolderId = "reports-folder-id",
};
var credentialSource = GoogleServiceAccountCredentialSource.FromFile(
"service-account.json",
sessionOptions);
var session = new GoogleWorkspaceSession(credentialSource, sessionOptions);
Handling failed exports:
try {
var result = await document.ExportToGoogleDocsAsync(session, options);
Console.WriteLine(result.WebViewLink);
} catch (GoogleWorkspaceExportException exception) {
Console.WriteLine(exception.FailureKind);
foreach (var notice in exception.Report.Notices) {
Console.WriteLine($"{notice.Severity}: {notice.Feature} - {notice.Message}");
}
} catch (GoogleWorkspaceExportCanceledException exception) {
Console.WriteLine(exception.FailureKind);
}
Turning diagnostics into log-ready entries:
foreach (var entry in exception.ToDiagnosticEntries()) {
Console.WriteLine($"{entry.Severity} {entry.Feature} {entry.FailureKind}: {entry.Message}");
}
Streaming diagnostics during export:
var session = new GoogleWorkspaceSession(
credentialSource,
new GoogleWorkspaceSessionOptions {
DiagnosticSink = entry =>
Console.WriteLine($"{entry.Severity} {entry.Feature} [{entry.FailureKind}]: {entry.Message}")
});
Session options
DefaultFolderId: used when exporter save options omitLocation.FolderId.DefaultDriveId: used when exporter save options omitLocation.DriveId.MaxRetryCount: retry budget for transient Google API failures.RetryBaseDelay: starting point for exponential backoff when noRetry-Afterheader is present.RetryMaxDelay: cap for retry delays.RequestTimeout: sharedHttpClienttimeout for Google API requests.DiagnosticSink: optional callback for live retry, authentication, Drive-placement, and API failure diagnostics during export.SubjectUserandUseDomainWideDelegation: available for apps that implement delegated credential flows in their ownIGoogleWorkspaceCredentialSource.SubjectUserandUseDomainWideDelegation: also consumed byGoogleServiceAccountCredentialSourcefor domain-wide delegation.
Notes
GoogleServiceAccountCredentialSourcecurrently relies on native PEM import support and is intended for modern runtimes such asnet8.0andnet10.0. On older targets, acquire tokens externally and useStaticAccessTokenCredentialSourceorDelegateGoogleWorkspaceCredentialSource.- The package does not ship an interactive browser OAuth flow. Applications are expected to provide or integrate one through
IGoogleWorkspaceCredentialSource, althoughStaticAccessTokenCredentialSource,DelegateGoogleWorkspaceCredentialSource, andGoogleServiceAccountCredentialSourcecover common server-side and pre-issued-token scenarios. - Exporters add
ApiRetriesnotices toTranslationReportwhen an operation succeeds after transient Google API failures. - Exporters throw
GoogleWorkspaceExportExceptionwhen token acquisition, Google API execution, or request timeout failures occur, so callers can inspectFailureKindand the capturedTranslationReport. - Exporters throw
GoogleWorkspaceExportCanceledExceptionwhen the caller cancels the export, preserving both cancellation semantics and the capturedTranslationReport. - Google API failures now prefer parsed Google JSON error details such as status and reason codes when those are available.
- Replacement flows can target an existing file by setting
GoogleDriveFileLocation.ExistingFileId.
For concrete exporters, see OfficeIMO.Word.GoogleDocs and OfficeIMO.Excel.GoogleSheets.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 is compatible. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.7.2
- System.Text.Json (>= 10.0.7 && < 11.0.0)
-
.NETStandard 2.0
- System.Text.Json (>= 10.0.7 && < 11.0.0)
-
net10.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages (2)
Showing the top 2 NuGet packages that depend on OfficeIMO.GoogleWorkspace:
| Package | Downloads |
|---|---|
|
OfficeIMO.Excel.GoogleSheets
Google Sheets planning and export scaffolding for OfficeIMO.Excel. |
|
|
OfficeIMO.Word.GoogleDocs
Google Docs planning and export scaffolding for OfficeIMO.Word. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0 | 43 | 6/5/2026 |