🦊

[Laravel]GoogleのDrive APIとSheets APIを触ってみた

2022/10/18に公開

前提

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