asgoodasnu/google-spreadsheet-bundle
A Symfony bundle for integrating Google Spreadsheets into your application. It provides configuration and container services for authenticating with Google APIs and reading or writing spreadsheet data, simplifying Google Sheets access in Symfony projects.
Verdict: do not adopt. Use it as a pattern reference only. This is a zero-signal artifact — 0 stars, 0 dependents, score 0 — sitting on top of two layers that are both end-of-life. The TPM-relevant framing is that the pattern it enables (ops teams editing a sheet the app reads) is genuinely valuable; this dependency is not the way to get it.
Architecture fit
*Bundle class, a DependencyInjection/Extension, and a config tree intended for app/AppKernel.php. Laravel consumes Symfony components, not bundles, so it is not installable into a Laravel app in any meaningful sense. At best you vendor the underlying asimlqt/php-google-spreadsheet-client and re-wire it by hand — at which point the bundle contributes nothing.Integration feasibility — low
asimlqt/php-google-spreadsheet-client speaks the legacy Spreadsheets API (GData feeds, ClientLogin/OAuth1 bearer). Sheets API v4 is REST/JSON with OAuth2 and a different resource model (spreadsheet → sheet → range → value range). This is a rewrite, not a config change.google/apiclient will likely conflict. Versions of this vintage predate the Google_Client → Google\Client namespace migration and will not co-install with a current client without a fork.Technical risk
| Risk | Severity | Note |
|---|---|---|
| API surface removed by Google | Blocking | No in-package workaround |
| Unmaintained upstream | High | No patches, no security response |
| Framework generation (Symfony 2.x) | High | Host app is already unsupported |
Dependency-pin conflicts with google/apiclient |
High | Namespace migration break |
| Credential handling | Medium | Legacy bundles often pass tokens as container params — audit before reuse |
| Ecosystem mismatch (bundle ≠ Laravel package) | Blocking | Not adoptable on our stack |
Key questions to answer before any commitment
Stack fit
google/apiclient directly against Sheets API v4, wrapped behind an internal interface (e.g. SpreadsheetWriter::append(string $sheetId, array $row)). Evaluate a maintained wrapper such as revolution/laravel-google-sheets as optional sugar — the direct client is ~30 lines and keeps one fewer dependency inside the trust boundary.google/apiclient v2 as a service in services.yml; that costs less time than debugging an abandoned bundle's auth flow.Migration path
google/apiclient → authenticate → read a range → append a row to a throwaway sheet. This proves the entire risk surface.exportReport, syncRows). Nothing above it should know Sheets exists.valueInputOption=USER_ENTERED vs RAW deliberately — the wrong choice silently mangles dates and leading zeros.composer.json, delete container/config entries, and confirm no credential params linger.Compatibility
google/apiclient ^2.x. Service account for server jobs; OAuth2 refresh-token flow only where per-user access is non-negotiable.Sequencing
Maintenance
google/apiclient) is Google-maintained, converting an unsupported dependency into a supported one at equal or lower complexity. This is the rare case where the safer option is also the cheaper one.Support
Scaling
values.batchGet) and batched appends — never per-row calls in a loop.Failure modes to instrument from day one
Ramp-up
Recommendation: Reject asgoodasnu/google-spreadsheet-bundle. Fund a one-day spike against Sheets API v4 with google/apiclient, wrap it behind a domain interface, and size the work at roughly one engineer-week including quota handling, header validation, and instrumentation. Record the decision in the architecture log so the same package does not resurface in a future evaluation.
How can I help you explore Laravel packages today?