Edited at

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してライブラリ導入

// GitHubから落としてくる

git clone https://github.com/niiyz/GoogleSheetsAPI-Sample
// ディレクトリに入る
cd GoogleSheetsAPI-Sample
// ライブラリインストール
composer install

composer.jsonでシートAPIと.envのライブラリを指定しているのでそれらが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