プロジェクトを作る。
1. Google Cloud Platformにアクセスする。
2. プロジェクトを作成する。
3. 作成したプロジェクトでSheetsAPIを有効にする。
- 「sheet」で検索
- 「有効にする」を押下する。
- 認証情報を取得する
- Jsonファイルがダウンロードされる
スプレッドシート作成・共有設定
- 1行目に手動で項目ヘッダーを入力しておく。
- 共有ボタンを押下する。
- ユーザー欄にダウンロードした Jsonファイルに記述されている「client_email」の内容をコピペする。
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);
- ヘッダーの下に追記される。