PHPackages                             arindam/gsheet-appscript - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. arindam/gsheet-appscript

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

arindam/gsheet-appscript
========================

A laravel package for access and manage any google sheet

v3.0.0(2y ago)58MITBlade

Since Mar 10Pushed 2y ago1 watchersCompare

[ Source](https://github.com/dev-arindam-roy/laravel-package-google-sheet-appscript)[ Packagist](https://packagist.org/packages/arindam/gsheet-appscript)[ RSS](/packages/arindam-gsheet-appscript/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (5)Used By (0)

LARAVEL PACKAGE - ACCESS GOOGLE SHEET
=====================================

[](#laravel-package---access-google-sheet)

### A laravel package for access and manage any google sheet.

[](#a-laravel-package-for-access-and-manage-any-google-sheet)

Installation
------------

[](#installation)

> **No dependency on PHP version and LARAVEL version**

### STEP 1: Run the composer command:

[](#step-1-run-the-composer-command)

```
composer require arindam/gsheet-appscript
```

### STEP 2: Laravel without auto-discovery:

[](#step-2-laravel-without-auto-discovery)

If you don't use auto-discovery, add the ServiceProvider to the providers array in config/app.php

> In providers section

```
Arindam\GsheetAppScript\GsheetAppScriptServiceProvider::class,
```

> In aliases section

```
'GsheetAppScript' => Arindam\GsheetAppScript\Gsheet\GsheetAppScriptClassFacade::class,
```

### STEP 3: Publish the package config:

[](#step-3-publish-the-package-config)

```
php artisan vendor:publish --provider="Arindam\GsheetAppScript\GsheetAppScriptServiceProvider" --force
-OR-
php artisan vendor:publish --tag="gsheet-appscript:config"
```

### STEP 4: Add Google Sheet AppScript API Url to .env file:

[](#step-4-add-google-sheet-appscript-api-url-to-env-file)

```
GSHEET_APPSCRIPT_API_URL=_YOUR_APP_SCRIPT_API_URL_
```

How to use?: It's Very Easy
---------------------------

[](#how-to-use-its-very-easy)

> **FACADE HELPER FUNCTIONS**

```
use GsheetAppScript;

GsheetAppScript::allRecords(); //get all records from google sheet

GsheetAppScript::addRow(['Text1', 'Text2', 'Text3' ...]); //add row in the google sheet

GsheetAppScript::setHeading(['Heading1', 'Heading2', 'Heading3' ...]); //set or edit heading in the google sheet

GsheetAppScript::editRow(['id' => 4, 'Text1', 'Text2', 'Text3' ...]); //edit data in the google sheet, just pass the row number as id with data

GsheetAppScript::removeRow(['id' => 4]); //remove row from google sheet, just pass the row number

GsheetAppScript::clearSheet(); //delete all records in google sheet
```

> **DIRECT USE BY ROUTE**

 &gt;&gt; `Just install and run the below route ````
Ex: http://your-website/onex/gsheet

Ex: http://localhost:8000/onex/gsheet
```

[![2024-03-10_220306](https://private-user-images.githubusercontent.com/24665327/311525102-185945de-0916-4809-997d-c3f0fa1972eb.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIzMDAwODYsIm5iZiI6MTc4MjI5OTc4NiwicGF0aCI6Ii8yNDY2NTMyNy8zMTE1MjUxMDItMTg1OTQ1ZGUtMDkxNi00ODA5LTk5N2QtYzNmMGZhMTk3MmViLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjI0VDExMTYyNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQyMDg1ZWVkYjdkZTFiMGIyM2Y4ZjA3MTJkYTAwNGE5YjQxNGJiNWVjYjk3Y2FkZDgyNTc4NjlhZmU4NWEyOTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.4aFaMgwH9ItLHTucL_Yyb2Mx4CljmAb0V9RYFGjarnM)](https://private-user-images.githubusercontent.com/24665327/311525102-185945de-0916-4809-997d-c3f0fa1972eb.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIzMDAwODYsIm5iZiI6MTc4MjI5OTc4NiwicGF0aCI6Ii8yNDY2NTMyNy8zMTE1MjUxMDItMTg1OTQ1ZGUtMDkxNi00ODA5LTk5N2QtYzNmMGZhMTk3MmViLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjI0VDExMTYyNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQyMDg1ZWVkYjdkZTFiMGIyM2Y4ZjA3MTJkYTAwNGE5YjQxNGJiNWVjYjk3Y2FkZDgyNTc4NjlhZmU4NWEyOTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.4aFaMgwH9ItLHTucL_Yyb2Mx4CljmAb0V9RYFGjarnM)

#### You can modify the configuration settings in - "config/gsheet-appscript.php":

[](#you-can-modify-the-configuration-settings-in---configgsheet-appscriptphp)

```
/** If you want to disable the route or this feature, then make it false */
'is_route_enabled' => true,
```

```
/** If you want to change the route prefix */
'route_prefix' => 'onex',
```

```
/** If you want to change the route name or path */
'route_name' => 'gsheet',
```

```
/** If you want to change the page heading */
'page_heading' => 'Google Sheet',
```

```
/** If you want to enable the securiry for access the google sheet information
 *  Then make it ('is_enabled') true and also you can set login-id and password through .env
 */
'authentication' => [
    'is_enabled' => env('GSHEET_APPSCRIPT_AUTH_ENABLED', false),
    'login_id' => env('GSHEET_APPSCRIPT_LOGIN_ID', 'onexadmin'),
    'password' => env('GSHEET_APPSCRIPT_LOGIN_PASSWORD', 'onexpassword')
]
```

[![2024-03-10_220503](https://private-user-images.githubusercontent.com/24665327/311525213-f135b6ba-c83d-46a5-aaa1-c8fc7293b714.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIzMDAwODYsIm5iZiI6MTc4MjI5OTc4NiwicGF0aCI6Ii8yNDY2NTMyNy8zMTE1MjUyMTMtZjEzNWI2YmEtYzgzZC00NmE1LWFhYTEtYzhmYzcyOTNiNzE0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjI0VDExMTYyNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWI0NGYyYWM5M2UxNDI0YmVjMjVlYmFkNWIzODEzNjgwMWFiNWY3YmE4ODY5ZDI3ZTc0NzY2M2FjNGQ0ZDMzMzQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.lq0vjL50sx5E5uCgs_7ufaAAXehQHFhoH3EQaIVH44A)](https://private-user-images.githubusercontent.com/24665327/311525213-f135b6ba-c83d-46a5-aaa1-c8fc7293b714.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIzMDAwODYsIm5iZiI6MTc4MjI5OTc4NiwicGF0aCI6Ii8yNDY2NTMyNy8zMTE1MjUyMTMtZjEzNWI2YmEtYzgzZC00NmE1LWFhYTEtYzhmYzcyOTNiNzE0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjI0VDExMTYyNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWI0NGYyYWM5M2UxNDI0YmVjMjVlYmFkNWIzODEzNjgwMWFiNWY3YmE4ODY5ZDI3ZTc0NzY2M2FjNGQ0ZDMzMzQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.lq0vjL50sx5E5uCgs_7ufaAAXehQHFhoH3EQaIVH44A)

Google AppScript Code:
----------------------

[](#google-appscript-code)

> **Just Copy &amp; paste below code in your google sheet appscript section &amp; get the app url**

```
/** All Get Request */
function doGet() {
  return ContentService.createTextOutput(getAllRows());
}

/** All Post Request */
function doPost(req) {
  let data = JSON.parse(req.postData.contents);
  if(data.actionkey == "SAVE") {
    return ContentService.createTextOutput(addSaveRow(data));
  }
  if(data.actionkey == "UPDATE") {
    return ContentService.createTextOutput(updateSaveRow(data));
  }
  if(data.actionkey == "DELETE") {
    return ContentService.createTextOutput(deleteRow(data));
  }
  if(data.actionkey == "VIEW") {
    return ContentService.createTextOutput(viewRow(data));
  }
  if(data.actionkey == "CLEAR") {
    return ContentService.createTextOutput(clearSheet());
  }
}

/** Add */
function addSaveRow(jsonObjData) {
  if (jsonObjData['actionkey']) {
    delete jsonObjData['actionkey'];
  }
  SpreadsheetApp.getActiveSheet().appendRow(Object.values(jsonObjData));
  return 'SUCCESS';
}

/** Edit */
function getRowId(textId) {
  let findData = SpreadsheetApp.getActiveSheet().createTextFinder(textId).matchEntireCell(true).findNext();
  if(findData) {
    return findData.getRow();
  }
  return 0;
}

/** Update */
function updateSaveRow(jsonObjData) {
  let sheetRowNo = jsonObjData.id;
  if (jsonObjData['actionkey']) {
    delete jsonObjData['actionkey'];
  }
  if (jsonObjData['id']) {
    delete jsonObjData['id'];
  }
  if(sheetRowNo) {
    Object.keys(jsonObjData).forEach(function(key, index) {
      SpreadsheetApp.getActiveSheet().getRange(sheetRowNo, index + 1).setValue(jsonObjData[key]);
    });
    return "SUCCESS";
  }
  return "ERROR";
}

/** View a Record */
function viewRow(jsonObjData) {
  let findData = SpreadsheetApp.getActiveSheet().createTextFinder(jsonObjData.id).matchEntireCell(true).findNext();
  if(findData) {
    return findData;
  }
  return 0;
}

/** Delete */
function deleteRow(jsonObjData) {
  if(jsonObjData.id) {
    SpreadsheetApp.getActiveSheet().deleteRow(jsonObjData.id);
    return "SUCCESS";
  } else {
    return "ERROR";
  }
}

/** Get All */
function getAllRows() {
  let obj = {};
  let data = SpreadsheetApp.getActiveSheet().getDataRange().getValues().filter(row => row.join(""));
  obj = {
    data: data,
    cols: SpreadsheetApp.getActiveSheet().getDataRange().getNumColumns()
  }
  return JSON.stringify(obj);
}

/** Clear All */
function clearSheet() {
  SpreadsheetApp.getActiveSheet().clear({contentsOnly: true});
  return "SUCCESS";
}
```

[![2024-03-10_234040](https://private-user-images.githubusercontent.com/24665327/311534536-90586591-92ea-46ec-b3f8-5b8c730d1743.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIzMDAwODYsIm5iZiI6MTc4MjI5OTc4NiwicGF0aCI6Ii8yNDY2NTMyNy8zMTE1MzQ1MzYtOTA1ODY1OTEtOTJlYS00NmVjLWIzZjgtNWI4YzczMGQxNzQzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjI0VDExMTYyNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWIyOTA5YTdmNTM5MTkwMzEyMTBhOTU5YjQ1YTcxYTY2NjhjMGRhNTM5ZDhlYjUyZjQxNWJkMGEzZDdmMDViMDImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.Rgl5UZqzwob7PlZj4qx1e1gnyCVHwIEvdvzHSQq4EqM)](https://private-user-images.githubusercontent.com/24665327/311534536-90586591-92ea-46ec-b3f8-5b8c730d1743.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIzMDAwODYsIm5iZiI6MTc4MjI5OTc4NiwicGF0aCI6Ii8yNDY2NTMyNy8zMTE1MzQ1MzYtOTA1ODY1OTEtOTJlYS00NmVjLWIzZjgtNWI4YzczMGQxNzQzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjI0VDExMTYyNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWIyOTA5YTdmNTM5MTkwMzEyMTBhOTU5YjQ1YTcxYTY2NjhjMGRhNTM5ZDhlYjUyZjQxNWJkMGEzZDdmMDViMDImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.Rgl5UZqzwob7PlZj4qx1e1gnyCVHwIEvdvzHSQq4EqM)

[![2024-03-10_234135](https://private-user-images.githubusercontent.com/24665327/311534561-2bec96b5-7f5c-45b4-8524-a4581d1e7f74.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIzMDAwODYsIm5iZiI6MTc4MjI5OTc4NiwicGF0aCI6Ii8yNDY2NTMyNy8zMTE1MzQ1NjEtMmJlYzk2YjUtN2Y1Yy00NWI0LTg1MjQtYTQ1ODFkMWU3Zjc0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjI0VDExMTYyNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTk0ZjFlZThlMDRmZmYxYWY3MjFhMjhlZmY0ZDEyZjc0MTQ3NjQ2MmM1Mjg5M2MwOTc1OThhYzlkYTk3YzcwZjMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.k-fEeT12PrmE6AqNypp8T7Jz9DexkfuoHcdgku0k0Dg)](https://private-user-images.githubusercontent.com/24665327/311534561-2bec96b5-7f5c-45b4-8524-a4581d1e7f74.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIzMDAwODYsIm5iZiI6MTc4MjI5OTc4NiwicGF0aCI6Ii8yNDY2NTMyNy8zMTE1MzQ1NjEtMmJlYzk2YjUtN2Y1Yy00NWI0LTg1MjQtYTQ1ODFkMWU3Zjc0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjI0VDExMTYyNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTk0ZjFlZThlMDRmZmYxYWY3MjFhMjhlZmY0ZDEyZjc0MTQ3NjQ2MmM1Mjg5M2MwOTc1OThhYzlkYTk3YzcwZjMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.k-fEeT12PrmE6AqNypp8T7Jz9DexkfuoHcdgku0k0Dg)

license:
--------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

Post Issues: if found any
-------------------------

[](#post-issues-if-found-any)

If have any issue please [write me](https://github.com/dev-arindam-roy/laravel-package-google-sheet-appscript/issues).

###  Health Score

22

—

LowBetter than 21% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity45

Maturing project, gaining track record

 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 ~0 days

Total

4

Last Release

844d ago

Major Versions

v1.0.1 → v2.0.02024-03-10

v2.0.0 → v3.0.02024-03-10

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/58600558?v=4)[devarindam](/maintainers/devarindam)[@devarindam](https://github.com/devarindam)

---

Top Contributors

[![dev-arindam-roy](https://avatars.githubusercontent.com/u/24665327?v=4)](https://github.com/dev-arindam-roy "dev-arindam-roy (8 commits)")

---

Tags

google sheetgoogle appscript

### Embed Badge

![Health badge](/badges/arindam-gsheet-appscript/health.svg)

```
[![Health](https://phpackages.com/badges/arindam-gsheet-appscript/health.svg)](https://phpackages.com/packages/arindam-gsheet-appscript)
```

###  Alternatives

[abbotton/dcat-sku-plus

基于Dcat Admin的SKU扩展增强版

542.3k](/packages/abbotton-dcat-sku-plus)[justbetter/laravel-magento-stock

This packages facilitates a generic way to push stock to Magento.

1220.0k2](/packages/justbetter-laravel-magento-stock)[pskuza/rclonewrapper

Simple wrapper to use rclone in your PHP projects.

189.3k](/packages/pskuza-rclonewrapper)[collab/module-consent-mode

Cookie Consent Mode Popup Extension for Magento 2

121.9k](/packages/collab-module-consent-mode)

PHPackages © 2026

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