🦊
[Laravel]GoogleのDrive APIとSheets APIを触ってみた
前提
Google Drive APIのバージョンv3を使用しました。
今回は以下のことをしました
- ドライブのフォルダ内のファイルを取得する
- スプレッドシートからデータを取得する
初めに
このサイトを見ながら、以下の設定をしてください。
- GCPのサービスアカウントを作成して、鍵をJSONで作成する
- Google APIでスプレッドシートを有効にする
- ドライブの該当のフォルダで、サービスアカウントに編集者の権限を与える
- 該当のスプレッドシートで、サービスアカウントに編集者の権限を与える
- Google Client Libraryをインストールする
ドライブのフォルダ内のファイルを取得する
今回は特定の文字が含まれているファイルの検索とmineTypeによる検索の実装をしました。
$client = new \Google_Client();
$key_file = './google-client.json'; // サービスキーのjsonファイル
$client->setAuthConfig($key_file);
$client->setScopes([
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/spreadsheets'
]);
//ドライブを検索する----------------
$driveService = new \Google_Service_Drive($client);
$folderName = 'フォルダー名';
$mimeType = 'application/vnd.google-apps.spreadsheet';//ファイルのタイプ(今回はスプレッドシートを検索)
//ドライブのフォルダ内を検索
$result = $driveService->files->listFiles([
'q' => "mimeType='".$mimeType."' and name contains '" . $folderName . "'",
]);
if (count($result->getFiles()) == 0) {
logger()->debug("ファイルが存在しません");
return;
}
$data = $result->getFiles();//ファイルを配列で取得
スプレッドシートのデータを取得する
スプレッドシートの特定の範囲内の取得の実装をしました。
useの時に、asで自分でエイリアスを定義すると、エディターで予測変換が使えるようになります。
use Google\Service\Sheets as GoogleSheetService;//asを使用することにより、エディタで警告が発生せず、予測変換も表示されるようになる
$client = new \Google_Client();
$key_file = './google-client.json'; // サービスキーのjsonファイル
$client->setAuthConfig($key_file);
$client->setScopes([
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/spreadsheets'
]);
//スプレッドシート取得--------------------
$sheetId = 'スプレッドシートのID';
$sheetService = new GoogleSheetService($client);
$range = 'Sheet1'; // 取得する範囲(今回はSheet1の内容全てを取得)
//$range = 'A1:H10'; //セルの範囲を指定することもできる(A1からH10までのデータ)
//$range = 'Sheet1:A1:H10'; // 複数条件(Sheet1でA1からH10までのデータ)
$response = $sheetService->spreadsheets_values->get($sheetId, $range);
$values = $response->getValues();//データを配列で取得
Discussion