LoginSignup
41
40

More than 3 years have passed since last update.

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

Last updated at Posted at 2018-05-06

プロジェクトを作る。

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

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

41
40
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
40