PHP サービスアカウントを使ってグーグルドライブにフォルダーを作成するには?

ショコラ
ショコラ

PHP サービスアカウントを使ってグーグルドライブにフォルダーを作成するには?

ファイルと同じように作成することができました。
mimeType が面倒ですね。
共有もできることを確認しました。

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

ファイルと同じように、フォルダーも作成することができました。

$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);

// フォルダーを作成するためのメタデータを指定
$folderMetadata = new \Google_Service_Drive_DriveFile([
  'name'     => 'New Folder',                        // フォルダー名
  'mimeType' => 'application/vnd.google-apps.folder' // フォルダーのMIMEタイプ
]);

// フォルダーを作成
$folder = $service->files->create($folderMetadata,[
  'fields' => 'id'
]);

$drive_permission = new \Google_Service_Drive_Permission([
  'emailAddress' => 'mossan@answroz.com',
  'type'         => 'user',
  'role'         => 'writer',
]);

$service->permissions->create($folder->id,$drive_permission, [
  'transferOwnership' => false,
]);
// アップロードするファイルのメタデータを指定
$fileMetadata = new \Google_Service_Drive_DriveFile(array(
    'name' => 'example.txt', // アップロードするファイル名
    'parents' => array($folder->id) // 親フォルダーのID
));

// アップロードするファイルの内容
$content = "This is an example file content.";

// ファイルをアップロード
$file = $service->files->create($fileMetadata, array(
    'data' => $content,
    'mimeType' => 'text/plain', // ファイルのMIMEタイプ
    'uploadType' => 'multipart',
    'fields' => 'id'
));

以上

関連記事

Scroll to Top