Google Sheets API v4 を Laravel5.5 で使ってみる

なんとなく、データの出力先にGoogleスプレッドを使ってみようと思い、API連携してみた。

最初の接続の部分とかは公式をみて作ってみれば良いと思う。

英語と日本語がまざりあう公式…そして英語ページに行くと前まで日本語で表示されていたところが英語になる始末…まぁそのうち日本語化は進むのでしょう。

やりたいこと

テンプレートのシートがあって、シートをコピーして、必要な部分にDBのデータを送ってあげるってことをしたかったわけです。天下のGoogle先生のやってることですから公式に全部書いてるんでしょ?とかおもったら、まぁまぁひどい…ざつ…なので、私も雑に書きます。

PHPのクイックスタートにある内容は省略します。それでも、何かの役に立てばいいなと。

シートのコピー

$service = new \Google_Service_Sheets($client);

$spreadsheetId = "xxxxx"; // スプレッドシートのID
$valueInputOption = "USER_ENTERED";

$sheetId = 0;  // 最初に作られたシートは0になるみたい。

$requestBody = new \Google_Service_Sheets_DuplicateSheetRequest(array(
	'sourceSheetId' => $sheetId,
	'newSheetName' => 'シート名',
));
$body = new \Google_Service_Sheets_BatchUpdateSpreadsheetRequest();
$body->setRequests(["duplicateSheet" => $requestBody]);

$response = $service->spreadsheets->batchUpdate($spreadsheetId, $body);

シートの一覧

$result = $service->spreadsheets->get($spreadsheetId);
$sheetIds = [];
foreach ($result->sheets as $sheet) {
	$sheetIds[] = $sheet->getProperties()->sheetId;
}

シートの削除

$requestBody = new \Google_Service_Sheets_DeleteSheetRequest(array(
	'sheetId' => $sid,
));
$body = new \Google_Service_Sheets_BatchUpdateSpreadsheetRequest();
$body->setRequests(["deleteSheet" => $requestBody]);

$response = $service->spreadsheets->batchUpdate($spreadsheetId, $body);

セルへ出力(書き込み)

$range = 'B2:M200';

$values = array(
	array(
		"aa","bb","cc",
	),
	array(
		"aa2","bb2","cc2",
	),
	// Additional rows ...
);

$data = array();
$data[] = new \Google_Service_Sheets_ValueRange(array(
	'range' => $range,
	'values' => $values
));

$body = new \Google_Service_Sheets_BatchUpdateValuesRequest(array(
	'valueInputOption' => $valueInputOption,
	'data' => $data
));
$result = $service->spreadsheets_values->batchUpdate($spreadsheetId, $body);

 最後に

ざつですみません。いろいろやってたら何となく分かるのかなぁと思います。

結果、Laravelは関係ないですね…