GoogleSpreadSheet
PHP7
SheetsAPI

PHPでSheetsAPIを使用してGoogleスプレッドシートにデータを追記していくサンプル。

プロジェクトを作る。

1. Google Cloud Platformにアクセスする。

https://console.cloud.google.com/apis/library?hl=ja

2. プロジェクトを作成する。

スクリーンショット 2018-05-06 12.25.45.png

スクリーンショット 2018-05-06 12.28.21.png

3. 作成したプロジェクトでSheetsAPIを有効にする。

  • 「sheet」で検索
    スクリーンショット 2018-05-06 12.38.15.png

  • 「有効にする」を押下する。

スクリーンショット 2018-05-06 12.39.28.png

  • 認証情報を取得する スクリーンショット 2018-05-06 12.43.22.png

スクリーンショット 2018-05-06 12.45.28.png

  • Jsonファイルがダウンロードされる

スクリーンショット 2018-05-06 12.51.33.png

スプレッドシート作成・共有設定

  • 1行目に手動で項目ヘッダーを入力しておく。
  • 共有ボタンを押下する。

スクリーンショット 2018-05-06 13.00.49.png

  • ユーザー欄にダウンロードした Jsonファイルに記述されている「client_email」の内容をコピペする。

スクリーンショット 2018-05-06 13.06.09.png

PHPからスプレッドシート追記

0. githubからcloneしてライブラリ導入

git clone https://github.com/niiyz/GoogleSheetsAPI-Sample
  • ライブラリをインストール(composer install)する。
composer.json
   "require": {
        "google/apiclient": "^2.0", // シートAPIを使うためのライブラリ
        "vlucas/phpdotenv": "^2.4"  // .envを使うためのライブラリ
    }
composer install
  • vendorディレクトリにライブラリのソースがインストールされる

1. プロジェクト直下にダウンロードしたJsonファイルを設置

2. プロジェクト直下に.envを新規作成

SERVICE_KEY_JSONにJsonファイル名を記述
SPREADSHEET_IDにスプレッドシートIDを記述
  • スプレッドシートのURLが以下の場合「14qNBAGhsgAeL9zS8sQNdNAT7FModbqTztGilOWD-XXXX」がスプレッドシートID
https://docs.google.com/spreadsheets/d/14qNBAGhsgAeL9zS8sQNdNAT7FModbqTztGilOWD-XXXX/edit#gid=0

.env

SERVICE_KEY_JSON=GoogleSheetsAPI-Sample-Project-xxxxx99999.json
SPREADSHEET_ID=14qNBAGhsgAeL9zS8sQNdNAT7FModbqTztGilOWD-XXXX

3. PHPからスプレッドシートへ書き込み

  • PHP実行
% php GoogleSheetsAPISample.php
  • GoogleSheetsAPISample.php
<?php

require_once __DIR__.'/vendor/autoload.php';

use Dotenv\Dotenv;

/**
 * Class GoogleSheetsAPISample
 */
class GoogleSheetsAPISample {

    /**
     * @var Google_Service_Sheets
     */
    protected $service;

    /**
     * @var array|false|string
     */
    protected $spreadsheetId;

    /**
     * GoogleSheetsAPISample constructor.
     */
    public function __construct()
    {
        $dotenv = new Dotenv(__dir__);
        $dotenv->load();
        $credentialsPath = getenv('SERVICE_KEY_JSON');
        putenv('GOOGLE_APPLICATION_CREDENTIALS=' . dirname(__FILE__) . '/' . $credentialsPath);

        $this->spreadsheetId = getenv('SPREADSHEET_ID');

        $client = new Google_Client();
        $client->useApplicationDefaultCredentials();
        $client->addScope(Google_Service_Sheets::SPREADSHEETS);
        $client->setApplicationName('test');

        $this->service = new Google_Service_Sheets($client);
    }

    /**
     * @param string $date
     * @param string $name
     * @param string $comment
     */
    public function append(string $date, string $name, string $comment)
    {
        $value = new Google_Service_Sheets_ValueRange();
        $value->setValues([ 'values' => [ $date, $name, $comment ] ]);
        $response = $this->service->spreadsheets_values->append($this->spreadsheetId, 'シート1!A1', $value, [ 'valueInputOption' => 'USER_ENTERED' ] );

        var_dump($response);
    }
}

$sample = new GoogleSheetsAPISample;

$date    = date('Y/m/d');
$name    = '山川のりを';
$comment = 'ギターうまい';
$sample->append($date, $name, $comment);
  • ヘッダーの下に追記される。

スクリーンショット 2018-05-06 13.44.53.png