【PHP】Google Drive API 共有フォルダの場合

2021年4月21日

前の記事でGoogleのAPIを使用してファイルのアップロードをしましたが、共有フォルダーの場合はコードの追加が必要になります。

共有ドライブへリクエストするときの専用パラメーターが存在する

https://developers.google.com/drive/api/v3/enable-shareddrives

公式ドキュメントによると supportsAllDrives=true を付与することで共有ドライブへアクセスを前提としたアプリケーションであることをGoogleDrive側へ通知できるようです。
このパラメーターをリクエスト時に付与してあげれば共有ドライブを操作できるようになるわけです。

フォルダー作成のリクエスト、ファイル作成のリクエストにコードを追加します。

追加するパラメーター

 "includeTeamDriveItems" => true,
 "supportsTeamDrives" => true,

また共有フォルダにアクセスするときはteamDriveIdが必須になります。

共有フォルダのrootフォルダのIDを指定します。

         $fileMetadata = new Google_Service_Drive_DriveFile(array(
                    'name' => $fileName,
                    'parents' => array($folderId),
                    'teamDriveId' => '$drive_id' //共有フォルダのrootフォルダ
            ));

ファイルの作成

        $file = $driveService->files->create($fileMetadata, array(
                'data' => $content,
                'mimeType' => $mime,
                'mimeType' => 'application/x-gzip',
                'uploadType' => 'multipart',
                'includeTeamDriveItems' => true,
                'supportsTeamDrives' => true, 
                'fields' => 'id'));

フォルダの作成

$file = $driveService->files->create($fileMetadata,array(
     'fields'=>'id,name,parents',
     'includeTeamDriveItems' => true,
     'supportsTeamDrives' => true, 
));

自分のドライブではうまく行ったのに、共有フォルダをしてしたら404 親フォルダが見つかりませんエラーがでて、解決に4時間位かかったため、忘備録として記録しました。

誰かの助けになれば幸いです。



Next-k
GCPPHP

コメントする

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)