フォルダとは、メタデータのみを格納したファイルで、ファイルの整理に使用できます。 。次のプロパティがあります。
- フォルダとは、MIME タイプのファイルのことです。
application/vnd.google-apps.folder
。拡張子はありません。 - エイリアス
root
を使用すると、ファイル ID がある場所ならどこでもルートフォルダを参照できます。 提供されます。
ドライブ フォルダの上限について詳しくは、ファイルと フォルダの制限をご覧ください。
このガイドでは、フォルダに関連する基本的なタスクを行う方法について説明します。
フォルダを作成
フォルダを作成するには、files.create
を使用します。
メソッド(application/vnd.google-apps.folder
MIME を使用)
type と title。次のコードサンプルは、
クライアント ライブラリを使用してフォルダを作成する方法:
Java
import com.google.api.client.googleapis.json.GoogleJsonResponseException; import com.google.api.client.http.HttpRequestInitializer; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.json.gson.GsonFactory; import com.google.api.services.drive.Drive; import com.google.api.services.drive.DriveScopes; import com.google.api.services.drive.model.File; import com.google.auth.http.HttpCredentialsAdapter; import com.google.auth.oauth2.GoogleCredentials; import java.io.IOException; import java.util.Arrays; /* Class to demonstrate use of Drive's create folder API */ public class CreateFolder { /** * Create new folder. * * @return Inserted folder id if successful, {@code null} otherwise. * @throws IOException if service account credentials file not found. */ public static String createFolder() throws IOException { // Load pre-authorized user credentials from the environment. // TODO(developer) - See https://developers.google.com/identity for // guides on implementing OAuth2 for your application. GoogleCredentials credentials = GoogleCredentials.getApplicationDefault() .createScoped(Arrays.asList(DriveScopes.DRIVE_FILE)); HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter( credentials); // Build a new authorized API client service. Drive service = new Drive.Builder(new NetHttpTransport(), GsonFactory.getDefaultInstance(), requestInitializer) .setApplicationName("Drive samples") .build(); // File's metadata. File fileMetadata = new File(); fileMetadata.setName("Test"); fileMetadata.setMimeType("application/vnd.google-apps.folder"); try { File file = service.files().create(fileMetadata) .setFields("id") .execute(); System.out.println("Folder ID: " + file.getId()); return file.getId(); } catch (GoogleJsonResponseException e) { // TODO(developer) - handle error appropriately System.err.println("Unable to create folder: " + e.getDetails()); throw e; } } }
Python
import google.auth from googleapiclient.discovery import build from googleapiclient.errors import HttpError def create_folder(): """Create a folder and prints the folder ID Returns : Folder Id Load pre-authorized user credentials from the environment. TODO(developer) - See https://developers.google.com/identity for guides on implementing OAuth2 for the application. """ creds, _ = google.auth.default() try: # create drive api client service = build("drive", "v3", credentials=creds) file_metadata = { "name": "Invoices", "mimeType": "application/vnd.google-apps.folder", } # pylint: disable=maybe-no-member file = service.files().create(body=file_metadata, fields="id").execute() print(f'Folder ID: "{file.get("id")}".') return file.get("id") except HttpError as error: print(f"An error occurred: {error}") return None if __name__ == "__main__": create_folder()
Node.js
/** * Create a folder and prints the folder ID * @return{obj} folder Id * */ async function createFolder() { // Get credentials and build service // TODO (developer) - Use appropriate auth mechanism for your app const {GoogleAuth} = require('google-auth-library'); const {google} = require('googleapis'); const auth = new GoogleAuth({ scopes: 'https://www.googleapis.com/auth/drive', }); const service = google.drive({version: 'v3', auth}); const fileMetadata = { name: 'Invoices', mimeType: 'application/vnd.google-apps.folder', }; try { const file = await service.files.create({ requestBody: fileMetadata, fields: 'id', }); console.log('Folder Id:', file.data.id); return file.data.id; } catch (err) { // TODO(developer) - Handle error throw err; } }
PHP
use Google\Client; use Google\Service\Drive; function createFolder() { try { $client = new Client(); $client->useApplicationDefaultCredentials(); $client->addScope(Drive::DRIVE); $driveService = new Drive($client); $fileMetadata = new Drive\DriveFile(array( 'name' => 'Invoices', 'mimeType' => 'application/vnd.google-apps.folder')); $file = $driveService->files->create($fileMetadata, array( 'fields' => 'id')); printf("Folder ID: %s\n", $file->id); return $file->id; }catch(Exception $e) { echo "Error Message: ".$e; } }
.NET
using Google.Apis.Auth.OAuth2; using Google.Apis.Drive.v3; using Google.Apis.Services; namespace DriveV3Snippets { // Class to demonstrate use of Drive create folder API. public class CreateFolder { /// <summary> /// Creates a new folder. /// </summary> /// <returns>created folder id, null otherwise</returns> public static string DriveCreateFolder() { try { /* Load pre-authorized user credentials from the environment. TODO(developer) - See https://developers.google.com/identity for guides on implementing OAuth2 for your application. */ GoogleCredential credential = GoogleCredential.GetApplicationDefault() .CreateScoped(DriveService.Scope.Drive); // Create Drive API service. var service = new DriveService(new BaseClientService.Initializer { HttpClientInitializer = credential, ApplicationName = "Drive API Snippets" }); // File metadata var fileMetadata = new Google.Apis.Drive.v3.Data.File() { Name = "Invoices", MimeType = "application/vnd.google-apps.folder" }; // Create a new folder on drive. var request = service.Files.Create(fileMetadata); request.Fields = "id"; var file = request.Execute(); // Prints the created folder id. Console.WriteLine("Folder ID: " + file.Id); return file.Id; } catch (Exception e) { // TODO(developer) - handle error appropriately if (e is AggregateException) { Console.WriteLine("Credential Not found"); } else { throw; } } return null; } } }
特定のフォルダにファイルを作成する
特定のフォルダにファイルを作成するには、files.create
メソッドを使用して、フォルダ ID を
ファイルの parents
プロパティ。
parents
プロパティは、ファイルを含む親フォルダの ID を保持します。
parents
プロパティは、最上位のフォルダまたはフォルダにファイルを作成する場合に使用できます。
できます。
1 つのファイルに設定できる親フォルダは 1 つのみです。複数の親を指定するだけでは、 サポートされません。
次のコードサンプルは、次のコマンドを使用して、特定のフォルダにファイルを作成する方法を示しています。 クライアント ライブラリ:
Java
import com.google.api.client.googleapis.json.GoogleJsonResponseException; import com.google.api.client.http.FileContent; import com.google.api.client.http.HttpRequestInitializer; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.json.gson.GsonFactory; import com.google.api.services.drive.Drive; import com.google.api.services.drive.DriveScopes; import com.google.api.services.drive.model.File; import com.google.auth.http.HttpCredentialsAdapter; import com.google.auth.oauth2.GoogleCredentials; import java.io.IOException; import java.util.Arrays; import java.util.Collections; /* Class to demonstrate Drive's upload to folder use-case. */ public class UploadToFolder { /** * Upload a file to the specified folder. * * @param realFolderId Id of the folder. * @return Inserted file metadata if successful, {@code null} otherwise. * @throws IOException if service account credentials file not found. */ public static File uploadToFolder(String realFolderId) throws IOException { // Load pre-authorized user credentials from the environment. // TODO(developer) - See https://developers.google.com/identity for // guides on implementing OAuth2 for your application. GoogleCredentials credentials = GoogleCredentials.getApplicationDefault() .createScoped(Arrays.asList(DriveScopes.DRIVE_FILE)); HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter( credentials); // Build a new authorized API client service. Drive service = new Drive.Builder(new NetHttpTransport(), GsonFactory.getDefaultInstance(), requestInitializer) .setApplicationName("Drive samples") .build(); // File's metadata. File fileMetadata = new File(); fileMetadata.setName("photo.jpg"); fileMetadata.setParents(Collections.singletonList(realFolderId)); java.io.File filePath = new java.io.File("files/photo.jpg"); FileContent mediaContent = new FileContent("image/jpeg", filePath); try { File file = service.files().create(fileMetadata, mediaContent) .setFields("id, parents") .execute(); System.out.println("File ID: " + file.getId()); return file; } catch (GoogleJsonResponseException e) { // TODO(developer) - handle error appropriately System.err.println("Unable to upload file: " + e.getDetails()); throw e; } } }
Python
import google.auth from googleapiclient.discovery import build from googleapiclient.errors import HttpError from googleapiclient.http import MediaFileUpload def upload_to_folder(folder_id): """Upload a file to the specified folder and prints file ID, folder ID Args: Id of the folder Returns: ID of the file uploaded Load pre-authorized user credentials from the environment. TODO(developer) - See https://developers.google.com/identity for guides on implementing OAuth2 for the application. """ creds, _ = google.auth.default() try: # create drive api client service = build("drive", "v3", credentials=creds) file_metadata = {"name": "photo.jpg", "parents": [folder_id]} media = MediaFileUpload( "download.jpeg", mimetype="image/jpeg", resumable=True ) # pylint: disable=maybe-no-member file = ( service.files() .create(body=file_metadata, media_body=media, fields="id") .execute() ) print(f'File ID: "{file.get("id")}".') return file.get("id") except HttpError as error: print(f"An error occurred: {error}") return None if __name__ == "__main__": upload_to_folder(folder_id="1s0oKEZZXjImNngxHGnY0xed6Mw-tvspu")
Node.js
/** * Upload a file to the specified folder * @param{string} folderId folder ID * @return{obj} file Id * */ async function uploadToFolder(folderId) { const fs = require('fs'); const {GoogleAuth} = require('google-auth-library'); const {google} = require('googleapis'); // Get credentials and build service // TODO (developer) - Use appropriate auth mechanism for your app const auth = new GoogleAuth({ scopes: 'https://www.googleapis.com/auth/drive', }); const service = google.drive({version: 'v3', auth}); // TODO(developer): set folder Id // folderId = '1lWo8HghUBd-3mN4s98ArNFMdqmhqCXH7'; const fileMetadata = { name: 'photo.jpg', parents: [folderId], }; const media = { mimeType: 'image/jpeg', body: fs.createReadStream('files/photo.jpg'), }; try { const file = await service.files.create({ requestBody: fileMetadata, media: media, fields: 'id', }); console.log('File Id:', file.data.id); return file.data.id; } catch (err) { // TODO(developer) - Handle error throw err; } }
PHP
use Google\Client; use Google\Service\Drive; function uploadToFolder($folderId) { try { $client = new Client(); $client->useApplicationDefaultCredentials(); $client->addScope(Drive::DRIVE); $driveService = new Drive($client); $fileMetadata = new Drive\DriveFile(array( 'name' => 'photo.jpg', 'parents' => array($folderId) )); $content = file_get_contents('../files/photo.jpg'); $file = $driveService->files->create($fileMetadata, array( 'data' => $content, 'mimeType' => 'image/jpeg', 'uploadType' => 'multipart', 'fields' => 'id')); printf("File ID: %s\n", $file->id); return $file->id; } catch (Exception $e) { echo "Error Message: " . $e; } } require_once 'vendor/autoload.php'; uploadToFolder();
.NET
using Google.Apis.Auth.OAuth2; using Google.Apis.Drive.v3; using Google.Apis.Services; namespace DriveV3Snippets { // Class to demonstrate use of Drive upload to folder. public class UploadToFolder { /// <summary> /// Upload a file to the specified folder. /// </summary> /// <param name="filePath">Image path to upload.</param> /// <param name="folderId">Id of the folder.</param> /// <returns>Inserted file metadata if successful, null otherwise</returns> public static Google.Apis.Drive.v3.Data.File DriveUploadToFolder (string filePath, string folderId) { try { /* Load pre-authorized user credentials from the environment. TODO(developer) - See https://developers.google.com/identity for guides on implementing OAuth2 for your application. */ GoogleCredential credential = GoogleCredential.GetApplicationDefault() .CreateScoped(DriveService.Scope.Drive); // Create Drive API service. var service = new DriveService(new BaseClientService.Initializer { HttpClientInitializer = credential, ApplicationName = "Drive API Snippets" }); // Upload file photo.jpg in specified folder on drive. var fileMetadata = new Google.Apis.Drive.v3.Data.File() { Name = "photo.jpg", Parents = new List<string> { folderId } }; FilesResource.CreateMediaUpload request; // Create a new file on drive. using (var stream = new FileStream(filePath, FileMode.Open)) { // Create a new file, with metadata and stream. request = service.Files.Create( fileMetadata, stream, "image/jpeg"); request.Fields = "id"; request.Upload(); } var file = request.ResponseBody; // Prints the uploaded file id. Console.WriteLine("File ID: " + file.Id); return file; } catch (Exception e) { // TODO(developer) - handle error appropriately if (e is AggregateException) { Console.WriteLine("Credential Not found"); } else if (e is FileNotFoundException) { Console.WriteLine("File not found"); } else if (e is DirectoryNotFoundException) { Console.WriteLine("Directory Not found"); } else { throw; } } return null; } } }
フォルダ間でファイルを移動する
ファイルを移動するには、parents
プロパティの ID を更新する必要があります。
既存のファイルの親を追加または削除するには、addParents
を指定して files.update
メソッドを使用します。
removeParents
クエリ パラメータ。
1 つのファイルに設定できる親フォルダは 1 つのみです。複数の親を指定するだけでは、 サポートされません。
次のコードサンプルは、 クライアント ライブラリ:
Java
import com.google.api.client.googleapis.json.GoogleJsonResponseException; import com.google.api.client.http.HttpRequestInitializer; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.json.gson.GsonFactory; import com.google.api.services.drive.Drive; import com.google.api.services.drive.DriveScopes; import com.google.api.services.drive.model.File; import com.google.auth.http.HttpCredentialsAdapter; import com.google.auth.oauth2.GoogleCredentials; import java.io.IOException; import java.util.Arrays; import java.util.List; /* Class to demonstrate use case for moving file to folder.*/ public class MoveFileToFolder { /** * @param fileId Id of file to be moved. * @param folderId Id of folder where the fill will be moved. * @return list of parent ids for the file. */ public static List<String> moveFileToFolder(String fileId, String folderId) throws IOException { /* Load pre-authorized user credentials from the environment. TODO(developer) - See https://developers.google.com/identity for guides on implementing OAuth2 for your application.*/ GoogleCredentials credentials = GoogleCredentials.getApplicationDefault() .createScoped(Arrays.asList(DriveScopes.DRIVE_FILE)); HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter( credentials); // Build a new authorized API client service. Drive service = new Drive.Builder(new NetHttpTransport(), GsonFactory.getDefaultInstance(), requestInitializer) .setApplicationName("Drive samples") .build(); // Retrieve the existing parents to remove File file = service.files().get(fileId) .setFields("parents") .execute(); StringBuilder previousParents = new StringBuilder(); for (String parent : file.getParents()) { previousParents.append(parent); previousParents.append(','); } try { // Move the file to the new folder file = service.files().update(fileId, null) .setAddParents(folderId) .setRemoveParents(previousParents.toString()) .setFields("id, parents") .execute(); return file.getParents(); } catch (GoogleJsonResponseException e) { // TODO(developer) - handle error appropriately System.err.println("Unable to move file: " + e.getDetails()); throw e; } } }
Python
import google.auth from googleapiclient.discovery import build from googleapiclient.errors import HttpError def move_file_to_folder(file_id, folder_id): """Move specified file to the specified folder. Args: file_id: Id of the file to move. folder_id: Id of the folder Print: An object containing the new parent folder and other meta data Returns : Parent Ids for the file Load pre-authorized user credentials from the environment. TODO(developer) - See https://developers.google.com/identity for guides on implementing OAuth2 for the application. """ creds, _ = google.auth.default() try: # call drive api client service = build("drive", "v3", credentials=creds) # pylint: disable=maybe-no-member # Retrieve the existing parents to remove file = service.files().get(fileId=file_id, fields="parents").execute() previous_parents = ",".join(file.get("parents")) # Move the file to the new folder file = ( service.files() .update( fileId=file_id, addParents=folder_id, removeParents=previous_parents, fields="id, parents", ) .execute() ) return file.get("parents") except HttpError as error: print(f"An error occurred: {error}") return None if __name__ == "__main__": move_file_to_folder( file_id="1KuPmvGq8yoYgbfW74OENMCB5H0n_2Jm9", folder_id="1jvTFoyBhUspwDncOTB25kb9k0Fl0EqeN", )
Node.js
/** * Change the file's modification timestamp. * @param{string} fileId Id of the file to move * @param{string} folderId Id of the folder to move * @return{obj} file status * */ async function moveFileToFolder(fileId, folderId) { const {GoogleAuth} = require('google-auth-library'); const {google} = require('googleapis'); // Get credentials and build service // TODO (developer) - Use appropriate auth mechanism for your app const auth = new GoogleAuth({ scopes: 'https://www.googleapis.com/auth/drive', }); const service = google.drive({version: 'v3', auth}); try { // Retrieve the existing parents to remove const file = await service.files.get({ fileId: fileId, fields: 'parents', }); // Move the file to the new folder const previousParents = file.data.parents .join(','); const files = await service.files.update({ fileId: fileId, addParents: folderId, removeParents: previousParents, fields: 'id, parents', }); console.log(files.status); return files.status; } catch (err) { // TODO(developer) - Handle error throw err; } }
PHP
use Google\Client; use Google\Service\Drive; use Google\Service\Drive\DriveFile; function moveFileToFolder($fileId,$folderId) { try { $client = new Client(); $client->useApplicationDefaultCredentials(); $client->addScope(Drive::DRIVE); $driveService = new Drive($client); $emptyFileMetadata = new DriveFile(); // Retrieve the existing parents to remove $file = $driveService->files->get($fileId, array('fields' => 'parents')); $previousParents = join(',', $file->parents); // Move the file to the new folder $file = $driveService->files->update($fileId, $emptyFileMetadata, array( 'addParents' => $folderId, 'removeParents' => $previousParents, 'fields' => 'id, parents')); return $file->parents; } catch(Exception $e) { echo "Error Message: ".$e; } }
.NET
using Google; using Google.Apis.Auth.OAuth2; using Google.Apis.Drive.v3; using Google.Apis.Services; namespace DriveV3Snippets { // Class to demonstrate use-case of Drive move file to folder. public class MoveFileToFolder { /// <summary> /// Move specified file to the specified folder. /// </summary> /// <param name="fileId">Id of file to be moved.</param> /// <param name="folderId">Id of folder where the fill will be moved.</param> /// <returns>list of parent ids for the file, null otherwise.</returns> public static IList<string> DriveMoveFileToFolder(string fileId, string folderId) { try { /* Load pre-authorized user credentials from the environment. TODO(developer) - See https://developers.google.com/identity for guides on implementing OAuth2 for your application. */ GoogleCredential credential = GoogleCredential.GetApplicationDefault() .CreateScoped(DriveService.Scope.Drive); // Create Drive API service. var service = new DriveService(new BaseClientService.Initializer { HttpClientInitializer = credential, ApplicationName = "Drive API Snippets" }); // Retrieve the existing parents to remove var getRequest = service.Files.Get(fileId); getRequest.Fields = "parents"; var file = getRequest.Execute(); var previousParents = String.Join(",", file.Parents); // Move the file to the new folder var updateRequest = service.Files.Update(new Google.Apis.Drive.v3.Data.File(), fileId); updateRequest.Fields = "id, parents"; updateRequest.AddParents = folderId; updateRequest.RemoveParents = previousParents; file = updateRequest.Execute(); return file.Parents; } catch (Exception e) { // TODO(developer) - handle error appropriately if (e is AggregateException) { Console.WriteLine("Credential Not found"); } else if (e is GoogleApiException) { Console.WriteLine("File or Folder not found"); } else { throw; } } return null; } } }
ファイルとフォルダの上限
ドライブのファイルやフォルダには、保存容量の上限が設定されています。
ユーザー アイテムの上限
各ユーザーは、そのアカウントで作成されたアイテムを最大 5 億個まで保持できます。 上限に達すると、ユーザーは 。既存のアイテムの閲覧と編集は引き続き行えます。作成 ファイルを再度使用する場合、ユーザーはアイテムを完全に削除するか、別のアカウントを使用する必要があります。対象 詳しくは、ファイルをゴミ箱またはファイルから削除する、 フォルダをご覧ください。
この上限にカウントされるオブジェクトは次のとおりです。
- ユーザーがドライブで作成またはアップロードしたアイテム
- ユーザーが作成したアイテムのうち、現在他のユーザーが所有しているアイテム
- ゴミ箱内のアイテム
- ショートカット
- サードパーティ製ショートカット
この上限にカウントされないオブジェクトは次のとおりです。
- 完全に削除されたアイテム
- そのユーザーと共有しているが、オーナーが別のアイテム
- ユーザーが所有するアイテムだが、別のユーザーが作成したアイテム
5 億を超えるアイテムを追加しようとすると、
activeItemCreationLimitExceeded
HTTP ステータス コード レスポンス。
なお、サービス アカウントがアップロードできるアイテムの数に制限はありませんが、 1 つのサービス アカウントのアイテム数には、上限の 5 億アイテムが 作成できます。
フォルダとアイテムの上限
ユーザーのマイドライブ内のフォルダに保存できるアイテム数の上限は 500,000 個です。 この上限は、マイドライブのルートフォルダには適用されません。アイテム数 この上限にカウントされるのは
- フォルダ
- ファイル。ファイルの所有権に関係なく、すべてのファイル形式。
- ショートカット。フォルダ内のアイテムは、フォルダ内の 1 つのアイテムとしてカウントされます。 そのフォルダ内にはありません。詳細については、Terraform で ドライブ ファイルへのショートカットを作成する
- サードパーティ製のショートカット。フォルダ内のアイテムは、元のアイテムが そのフォルダ内にないということです。詳細については、次をご覧ください: アプリ。
フォルダの制限の詳細については、フォルダの制限 Google ドライブ。
フォルダの深さの上限
ユーザーのマイドライブに含めるネストレベルは 100 レベルまでです
できます。つまり、子フォルダをそのフォルダの下に
99 階層以上あるんだこの制限は子フォルダにのみ適用されます。子ども
MIME タイプが
application/vnd.google-apps.folder
にはこの制限は適用されません。
たとえば、次の図では、新しいフォルダをフォルダ内にネストできます。 フォルダ番号 100 の中にはありません。ただし、フォルダ番号 100 には 他のドライブ フォルダと同様のファイルです。
100 レベルを超えるフォルダを追加しようとすると、
myDriveHierarchyDepthLimitExceeded
HTTP ステータス コード レスポンス。