PHP サービスアカウントでマイドライブのファイルの一覧を確認するには?

ショコラ
ショコラ

PHP サービスアカウントでマイドライブのファイルの一覧を確認するには?

サービスアカウントもグーグルドライブGUIで確認できるのかな?
ちょっとわからなかったので、プログラム一覧を取得してみました。

もっさん先輩
もっさん先輩

サービスアカウントのマイドライブのファイル一覧を確認できます。

$client = new \Google\Client();
$client->setScopes([\Google_Service_Drive::DRIVE]); // グーグルドライブのスコープを指定

// サービスアカウントの認証情報を使用してGoogleクライアントをインスタンス化
$auth = tempnam(sys_get_temp_dir(),'auth-');
file_put_contents($auth,$this->api_google_credentials_json);
$client->setAuthConfig($auth);
unlink($auth);

$service = new \Google_Service_Drive($client);

// ファイルの一覧を取得
$results = $service->files->listFiles([
  'pageSize' => 1000,                          // 取得するファイルの数
  'fields' => 'nextPageToken, files(id,name)', // 取得するフィールド
]);

// ループで回す
$files = [];
foreach ($results->files as $file) {
  $files[] = $file->name;
}
dd($files);

因みに、↓のコマンドでファイル、フォルダーを削除できます。

$service->files->delete( $file->id );

フォルダーの有無を確認して、フォルダーが無ければフォルダーを作成するサンプルプログラムです。

// フォルダーの有無を確認
$folder_name = '画像';
$query = "mimeType='application/vnd.google-apps.folder' and name='{$folder_name}'";
$optParams = [
  'q' => $query,
  'fields' => 'files(id, name)',
];
$results = $service->files->listFiles($optParams);
if (1 <= count($results->files)) {
  $folderId = $results->files[0]->id;
}
else {
  // フォルダーを作成するためのメタデータを指定
  $folderMetadata = new \Google_Service_Drive_DriveFile([
    'name'     => $folder_name,                        // フォルダー名
    'mimeType' => 'application/vnd.google-apps.folder' // フォルダーのMIMEタイプ
  ]);
  // フォルダーを作成
  $folder = $service->files->create($folderMetadata,[
    'fields' => 'id',
  ]);
  $folderId = $folder->id;
}
dd( $folderId );

以上

関連記事

Scroll to Top