【Laravel】GoogleスプレッドシートのAPIであるSheetDBを導入してみた

Laravel

今回はLaravelでGoogleスプレッドシートに簡単にアクセルできるSheetDBの設定とその使い方をみていきます。

[環境]
Laravel : version 6.20.34
composer : version 2.1.8




Laravel環境の準備

今回はデスクトップ上にdevelopディレクトリを作成し、その中で環境構築しています。

$ composer create-project --prefer-dist laravel/laravel lara-spread "6.*"
$ php artisan -V 
Laravel Framework 6.20.34




Googleスプレッドシートの準備

今回はSheetDBという名前でスプレッドシートを下記のように用意しておきます。
このシートに入力されたデータをLaravel側で取得します。


最後にスプレッドシート上の右上にある共有ボタンからリンクを取得しておいてください。




SheetDBの設定

以下のURLで公式に入れます。

Google Sheets REST API, connect Google Spreadsheet with your site
Use your Google Sheets as a JSON API. Connect Google Spreadsheets to your CRM or any other tool using JSON API and RESTful requests.


Create Free APIを選択


次の画面で右上のCREATE NEWを選択


URLを入力するところに先ほどのスプレッドシートで取得したリンクを貼り
CREATE APIボタンを押します。


これでLaravelとGoogleスプレッドシートを結ぶSheetDBのAPIを作成することができました。


なお今回はSheetDBの無料プランを使用しているため制約があります。

・API数上限が2つまで

・リクエスト数上限500まで




SheetDB Libraryをインストール

GoogleスプレッドシートをLaravelで使用するために今回はSheetDBというAPIを使用しますが、Laravel側でSheetDBを適用させるために専用のライブラリをLaravelにインストールします。

$ composer require sheetdb/sheetdb-php




データを取得する

では先ほどのスプレットシートで入力されたデータをLaravelで取得するために
まずはcontrollerを作成しておきます。

$ php artisan make:controller SpreadController


SpreadController内の記述
lara-spread > app > Http > Controllers > SpreadController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use SheetDB\SheetDB;

class SpreadController extends Controller
{
    public function get(){
        $sheetDB = new SheetDB('API ID');
        $response = $sheetDB->get();
        dd($response);
    }
}

・use SheetDB\SheetDB;
⇨インストールしたSheetDBをSpreadControllerクラスで使用できるように記述

・new SheetDB(‘API ID’);
⇨SheetDBのインスタンスを作成

・$SheetDB→get();
⇨Googleスプレッドシート上のデータを全て取得


routeの記述
lara-spread > routes > web.php

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

Route::get('get', 'SpreadController@get'); #ここを追加


サーバを起動

$ php artisan serve 

以下のURLを入力すると、JSON形式でスプレッドシートの内容が全て取得できていると思います。http://127.0.0.1:8000/get

これでGoogleスプレッドシート内に記述された内容をLaravel側で取得することができました。




SheetDBのCRUDメソッド

#指定したデータの検索
$sheetDB->search(['lastName'=>'Yoichi']);

#一行にデータを追加
$sheetDB->create(['firstName'=>'Kaitani','lastName'=>'Riku','phone_number'=>'777-777-777']);

#指定したデータの更新
$sheetDB->update('firstName','Hiruma',['lastName'=>'Devil']);

#指定したデータを持つ一行分のデータを削除
$sheetDB->delete('firstName','Kaitani',);

その他詳しいメソッドについては公式をご確認ください。

今回は以上となります。

よろしければこちらも

【Laravel】SheetDBを使ってフォームで入力したデータをGoogleスプレッドシートに表示させる

コメント

タイトルとURLをコピーしました