既に夏が始まってます。
爬虫類並みに、気温の変化に弱い制作部カワサキです。
表題の通り、Spreadsheet API使う可能性として多そうなのは、
フォーム送信されたデータをSpreadsheetで管理するケースとか多いのではないかなと思います。
フォーム送信されたデータをSpreadsheetに書き出しておいて、
フォームに対してのリアクションをSpreadsheetで管理するみたいな感じです。
準備するもの
1.GoogleCloudでサービスアカウントを作成する
2.Google APIs Client Library for PHPをサーバーにインストールする。
3.データを書き出すSpreadsheetを用意する。
4.Google APIを利用してSpreadsheetへ書き込む為のロジック
以下に各々の簡単な説明をしていきます。
1.GoogleCloudでサービスアカウントを作成する
①「Google Sheets API」を有効にする
②GoogleCloud ⇒ IAMと管理 ⇒ サービスアカウント ⇒ サービスアカウントを作成
③鍵 ⇒ 鍵を追加(新しい鍵を作成) ⇒ JSON ⇒ 鍵をダウンロード ⇒ サーバーにアップロードします。
2.Google APIs Client Library for PHPをサーバーにインストールする。
①https://github.com/googleapis/google-api-php-clientからgoogle-api-php-clientを取得して、サーバーにインストールする。
※Composerを使用してサーバーにインストールします。
3.データを書き出すSpreadsheetを用意する。
①1-②で作成したサービスアカウントを共有ユーザーに「編集者」として追加します。
4.Google APIを利用してSpreadsheetへ書き込む為のロジック
①WP+CF7前提で話を進めると、メール送信時に処理をしたいので、Action「wpcf7_before_send_mail」を利用します。
②CF7で送信時にデータを取得する方法、以前書いたブログを見てください。
③SpreadSheetAPIとの接続方法
//2-①でインストールしたGoogle APIs Client Library for PHPの「autoload.php」を使用する
require_once ‘/home/[******]/asset/GoogleAPI/vendor/autoload.php’;
$client = new Google\Client();
//1-③でアップロードした「鍵」を指定します。
$client->setAuthConfig(‘/home/[******]/asset/GoogleAPI/*********-*********.json’);
$client->setScopes(Google_Service_Sheets::SPREADSHEETS);
$service = new Google_Service_Sheets($client);
//SpreadsheetのIDを指定する
$spreadsheet_id = ‘[3で用意したSpreadsheetのID]’;
$response = $service->spreadsheets->get($spreadsheet_id);
これで、Spreadsheetとの接続は完了です。
あとは、操作例ですが
//***************************************************************************
//先頭に空行を挿入する
//***************************************************************************
$request = new Google_Service_Sheets_Request([
‘insertDimension’ => [
‘range’ => [
‘sheetId’ => [URLにあるgid], // 対象のシートのシートID
‘dimension’ => ‘ROWS’, // 挿入する方向
‘startIndex’ => 1, // 挿入を開始するインデックス番号
‘endIndex’ => 2 // 挿入を終了するインデックス番号
]
]
]);
$batchRequest = new Google_Service_Sheets_BatchUpdateSpreadsheetRequest([
‘requests’ => [
$request
]
]);
$service->spreadsheets->batchUpdate($spreadsheet_id, $batchRequest);
渡す$dataは配列で渡します。セルの左から順番に値をセットしてくれます。
$data = array();
$data[] = ‘1番目’;
$data[] = ‘2番目’;
$data[] = ‘3番目’;
こんな感じです。
//***************************************************************************
//セルに値を設定する
//***************************************************************************
$data = new Google_Service_Sheets_ValueRange([
‘values’ => [
$data
]
]);
$service->spreadsheets_values->update($spreadsheet_id, ‘シート1!A2’, $data, [
‘valueInputOption’ => ‘USER_ENTERED’
]);
簡単に書きましたが、
以上がSpreadsheetAPIにデータを書き込むための手順です。
思ったよりも簡単なので、とりあえずやってみるのをお勧めします。
躓いても、メジャーなAPIなので、探せば必ず必要な情報も見つかると思います。