とても簡単!Googleスプレッドシートにデータを追加する方法

こんにちは、コバヤシです。
今回はGoogleスプレッドシートにデータを追加する方法について書きたいと思います。

Google Sheet APIを有効にする

まずは、Google Sheet APIを使えるようにします。

Google Cloud Platformから新たにプロジェクトを作成し、作成したプロジェクトの「APIとサービス」>「ライブラリ」へ移動します。

f:id:hide_san99:20210116165348p:plain

「Google Sheets API」を検索し、APIを有効にします。

認証情報の作成をする

1.作成したプロジェクトの「APIとサービス」>「認証情報」へ移動して 「認証情報を作成」から「サービスアカウント」を選択します。

f:id:hide_san99:20210116165357p:plain

2.「サービス アカウントの詳細」を入力し、「作成」をクリック、そのまま「完了」クリックします。

f:id:hide_san99:20210116170115p:plain

3.サービス アカウント の一覧に作成したアカウントが表示されているので、編集(鉛筆マーク)をクリックして、詳細へ移動します。 (この時表示されているメールアドレスを控えておきます。)

4.「鍵を追加」から「新しい鍵を作成」をクリックして鍵を作成します。キーのタイプをjsonにしてダウンロードしておきます。 f:id:hide_san99:20210116165836p:plain

シートを共有する

書き込むGoogleスプレッドシートを作成し、サービスアカウントの一覧に表示されていた「メールアドレス」と共有を行います。 また、スプレッドシートのIDが必要になるので、下記のxxxxxxとなっている部分を控えておきます。

https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/edit#gid=0

Google APIs Client Library for PHPをインストールする

composer require google/apiclient:"^2.7"

PHP5.6以上が必要です。

スプレッドシートに書き込む

<?php
require_once __DIR__ .'/modules/vendor/autoload.php';
  
// 認証情報作成で作成した鍵ファイル(json)へのパスを記述します
$key = __DIR__ . '/xxxxxxxxxxxxxx.json';
  
$client = new \Google_Client();
$client->setScopes([\Google_Service_Sheets::SPREADSHEETS, \Google_Service_Sheets::DRIVE]);
$client->setAuthConfig($key);
  
$sheet = new \Google_Service_Sheets($client);
$valueRange = new \Google_Service_Sheets_ValueRange();
  
// 1行分のデータを作成
$values = ['hoge', 'foo', date('Y/m/d H:i:s')];
$valueRange->setValues([ 'values' => $values ]);
  
// 書き込み実行
$sheet->spreadsheets_values->append($_ENV['SPREADSHEET_ID'], 'シート1!A1', $valueRange, [ 'valueInputOption' => 'USER_ENTERED' ] );

上記を実行すると、シート1のA1セルにデータが入ります。以降は次行にデータが追加されていきます。

まとめ

簡単にGoogleスプレッドシートにデータを追加していくことができました。
プログラムよりも認証情報の作成の方が手間かもしれません。。。

機会があったら追加以外の方法についても書いていきたいと思います。