PHPackages                             survos/google-sheets-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. survos/google-sheets-bundle

ActiveSymfony-bundle[API Development](/categories/api)

survos/google-sheets-bundle
===========================

This bundle manages Google Spreadsheets using the Google api.

2.0.83(6mo ago)1675MITPHPPHP ^8.4

Since May 17Pushed 5mo ago2 watchersCompare

[ Source](https://github.com/survos/SurvosGoogleSheetsBundle)[ Packagist](https://packagist.org/packages/survos/google-sheets-bundle)[ Docs](https://github.com/survos/SurvosGoogleSheetsBundle)[ GitHub Sponsors](https://github.com/kbond)[ RSS](/packages/survos-google-sheets-bundle/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (9)Versions (414)Used By (0)

credits
=======

[](#credits)

Inspired by / Forked from

Useful references
-----------------

[](#useful-references)

-
-
-
-

EXS-GoogleSheetsBundle
======================

[](#exs-googlesheetsbundle)

Very simple wrapper for Google sheets integration

### What is this bundle doing ?

[](#what-is-this-bundle-doing-)

This bundle provides basic Google API SpreadSheets Sheets Service methods as Symfony services.
Methods: Get|Create|Update|Clear|Delete

### Usage

[](#usage)

#### Configuration

[](#configuration)

1. Set your Google project and get the client secret file.
    [Click here to obtain your client secret and set project application name](https://developers.google.com/sheets/api/quickstart/php)
2. Save your client secret file as 'client\_secret.json' in your project.
3. Add the client secret file location, project application name and credential location in the Symfony config file

```
survos_google_sheets:
    application_name: 'Google Sheets API'
    credentials: '%kernel.root_dir%/config/sheets.googleapis.com.json'
    client_secret: '%kernel.root_dir%/config/client_secret.json'
```

Your credentials will be created by the bundle once you set the file location in the bundle.
Default location: '/Credentials/sheets.googleapis.com.json'

#### Create the access token

[](#create-the-access-token)

Create the access token for google api.

1. Execute the service via the command line.
    The service will provide you the link to get a verification code.

```
bin/console googlesheets:execute --function=token
```

2. Copy the verification code from the link then enter it in the command line.

#### Inputs

[](#inputs)

id: Spreadsheets id
title: sheet(tab) title
header: number of rows for header.
data: 2 dimensional array for grid data.

```
$data = [
    [ COL1_HEADER, COL2_HEADER, ...],
    [ ROW1COL1_CELL_VALUE, ROW1COL2_CELL_VALUE, ...],
    [ ROW1COL2_CELL_VALUE, ROW2COL2_CELL_VALUE, ...],
    ....
];
```

#### Methods

[](#methods)

##### SETUP(Common for all methods).

[](#setupcommon-for-all-methods)

Inject GoogleSheetsApiService or obtain it from the container.

ex) Set up an api client with the spreadsheets id that you want to manage.

```
    public function __construct(
        private readonly GoogleApiClientService $clientService,
        private readonly GoogleSheetsApiService $sheetService,
    )

$sheetService->setSheetServices(YOUR_SPREADSHEETS_ID_HERE);
```

##### GET

[](#get)

Get an existing spreadsheets

```
$spreadsheets = $service->getGoogleSpreadSheets();
```

##### CREATE

[](#create)

Create the new sheet in Google Spreadsheets.
Return: Number of data rows that are inserted to the new sheet.
If you call the function without data, it will create an empty sheet.

ex) Create the new sheet with data

```
$sheetTitle = 'my test sheet';
$data = [
    [ COL1_HEADER, COL2_HEADER, ...],
    [ ROW1COL1_CELL_VALUE, ROW1COL2_CELL_VALUE, ...],
    ....
];
$response = $service->createNewSheet($sheetTitle, $data);
```

##### UPDATE

[](#update)

Update the existing spreadsheets sheet.
Return: Number of data rows that are updated to the sheet.

If you wants to update only cell values, not the header, define number of rows for the header.
ex) Update grid data values only.

```
$header = 1;
$sheetTitle = 'my test sheet';
$data = [
    [ ROW1COL1_CELL_VALUE, ROW1COL2_CELL_VALUE, ...],
    [ ROW2COL1_CELL_VALUE, ROW2COL2_CELL_VALUE, ...],
    ....
];
$response = $service->updateSheet($sheetTitle, $data, $header);
```

##### CLEAR

[](#clear)

Clear the entire sheet values.
Return: number of rows that are cleared.

```
$sheetTitle = 'my test sheet';
$response = $service->clearSheetByTitle($sheetTitle);
```

##### DELETE

[](#delete)

Delete the existing sheet in the spreadsheets.
Return: Boolean

```
$sheetTitle = 'my test sheet';
$response = $service->deleteSheetByTitle($sheetTitle);
```

###### Example

[](#example)

Create the new sheet with header then update it with data

```
// setup the service
$service = $this->getContainer()->get('survos_google_sheets.sheets_service');
$service->setSheetServices(YOUR_SPREADSHEETS_ID_HERE);

// create the sheet
$sheetTitle = 'my test sheet';
$data = [
    [ COL1_HEADER, COL2_HEADER, COL3_HEADER]
];
$service->createNewSheet($sheetTitle, $data);

// update grid data
$header = 1;
$data = [
    [ ROW1COL1_CELL_VALUE, ROW1COL2_CELL_VALUE, ROW1COL3_CELL_VALUE],
    [ ROW2COL1_CELL_VALUE, ROW2COL2_CELL_VALUE, ROW2COL3_CELL_VALUE],
    [ ROW3COL1_CELL_VALUE, ROW3COL2_CELL_VALUE, ROW3COL3_CELL_VALUE],
    [ ROW4COL1_CELL_VALUE, ROW4COL2_CELL_VALUE, ROW4COL3_CELL_VALUE]
];
$service->updateSheet($sheetTitle, $data, $header);
```

###  Health Score

48

—

FairBetter than 95% of packages

Maintenance69

Regular maintenance activity

Popularity19

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity78

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

413

Last Release

203d ago

Major Versions

1.6.13 → 2.0.262025-09-28

PHP version history (3 changes)1.5.227PHP &gt;=8.2

1.5.487PHP ^8.3

2.0.26PHP ^8.4

### Community

Maintainers

![](https://www.gravatar.com/avatar/21b39551f92ed4143772c622f9e571589c5a72c96ab3c53fe67489ce0d83e806?d=identicon)[tacman1123](/maintainers/tacman1123)

---

Top Contributors

[![tacman](https://avatars.githubusercontent.com/u/619585?v=4)](https://github.com/tacman "tacman (6 commits)")

---

Tags

apisymfonybundlegooglespreadsheets

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan, Rector

Type Coverage Yes

### Embed Badge

![Health badge](/badges/survos-google-sheets-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/survos-google-sheets-bundle/health.svg)](https://phpackages.com/packages/survos-google-sheets-bundle)
```

###  Alternatives

[kreait/firebase-bundle

Symfony Bundle for the Firebase Admin SDK

1534.7M2](/packages/kreait-firebase-bundle)[harmbandstra/swagger-ui-bundle

Exposes swagger UI inside your Symfony project through a route (eg. /docs)

42867.3k](/packages/harmbandstra-swagger-ui-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
