درایوهای مشترک را مدیریت کنید

این راهنما شامل وظایف مربوط به مدیریت درایوهای مشترک، مانند ایجاد درایوهای مشترک و مدیریت اعضا و مجوزها، با استفاده از Google Drive API است.

برای اطلاعات بیشتر درباره محدودیت‌های پوشه درایو مشترک، به محدودیت‌های پوشه مراجعه کنید.

ایجاد درایوهای مشترک

برای ایجاد یک درایو مشترک، از روش drives.create استفاده کنید.

جاوا

drive/snippets/drive_v3/src/main/java/CreateDrive.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.DriveScopes;
import com.google.api.services.drive.model.Drive;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.IOException;
import java.util.Arrays;
import java.util.UUID;

/* class to demonstrate use-case of Drive's create drive. */
public class CreateDrive {

  /**
   * Create a drive.
   *
   * @return Newly created drive id.
   * @throws IOException if service account credentials file not found.
   */
  public static String createDrive() 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));
    HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(
        credentials);

    // Build a new authorized API client service.
    com.google.api.services.drive.Drive service =
        new com.google.api.services.drive.Drive.Builder(new NetHttpTransport(),
            GsonFactory.getDefaultInstance(),
            requestInitializer)
            .setApplicationName("Drive samples")
            .build();

    Drive driveMetadata = new Drive();
    driveMetadata.setName("Project Resources");
    String requestId = UUID.randomUUID().toString();
    try {
      Drive drive = service.drives().create(requestId,
              driveMetadata)
          .execute();
      System.out.println("Drive ID: " + drive.getId());

      return drive.getId();
    } catch (GoogleJsonResponseException e) {
      // TODO(developer) - handle error appropriately
      System.err.println("Unable to create drive: " + e.getDetails());
      throw e;
    }
  }
}

پایتون

drive/snippets/drive-v3/drive_snippet/create_drive.py
import uuid

import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError


def create_drive():
  """Create a drive.
  Returns:
      Id of the created drive

  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)

    drive_metadata = {"name": "Project Resources"}
    request_id = str(uuid.uuid4())
    # pylint: disable=maybe-no-member
    drive = (
        service.drives()
        .create(body=drive_metadata, requestId=request_id, fields="id")
        .execute()
    )
    print(f'Drive ID: {drive.get("id")}')

  except HttpError as error:
    print(f"An error occurred: {error}")
    drive = None

  return drive.get("id")


if __name__ == "__main__":
  create_drive()

Node.js

drive/snippets/drive_v3/drive_snippets/create_drive.js
/**
 * Create a drive.
 * */
async function createDrive() {
  // 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 uuid = require('uuid');

  const auth = new GoogleAuth({
    scopes: 'https://www.googleapis.com/auth/drive',
  });
  const service = google.drive({version: 'v3', auth});

  const driveMetadata = {
    name: 'Project resources',
  };
  const requestId = uuid.v4();
  try {
    const Drive = await service.drives.create({
      resource: driveMetadata,
      requestId: requestId,
      fields: 'id',
    });
    console.log('Drive Id:', Drive.data.id);
    return Drive.data.id;
  } catch (err) {
    // TODO(developer) - Handle error
    throw err;
  }
}

PHP

drive/snippets/drive_v3/src/DriveCreateDrive.php
<?php
use Google\Client;
use Google\Service\Drive;
use Ramsey\Uuid\Uuid;
function createDrive()
{
    try {
        $client = new Client();
        $client->useApplicationDefaultCredentials();
        $client->addScope(Drive::DRIVE);
        $driveService = new Drive($client);

        $driveMetadata = new Drive\Drive(array(
                'name' => 'Project Resources'));
        $requestId = Uuid::uuid4()->toString();
        $drive = $driveService->drives->create($requestId, $driveMetadata, array(
                'fields' => 'id'));
        printf("Drive ID: %s\n", $drive->id);
        return $drive->id;
    } catch(Exception $e)  {
        echo "Error Message: ".$e;
    }  

}

دات نت

drive/snippets/drive_v3/DriveV3Snippets/CreateDrive.cs
using Google.Apis.Auth.OAuth2;
using Google.Apis.Drive.v3;
using Google.Apis.Drive.v3.Data;
using Google.Apis.Services;

namespace DriveV3Snippets
{
    // Class to demonstrate use of Drive's create drive.
    public class CreateDrive
    {
        /// <summary>
        /// Create a drive.
        /// </summary>
        /// <returns>newly created drive Id.</returns>
        public static string DriveCreateDrive()
        {
            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"
                });

                var driveMetadata = new Drive()
                {
                    Name = "Project Resources"
                };
                var requestId = Guid.NewGuid().ToString();
                var request = service.Drives.Create(driveMetadata, requestId);
                request.Fields = "id";
                var drive = request.Execute();
                Console.WriteLine("Drive ID: " + drive.Id);
                return drive.Id;
            }
            catch (Exception e)
            {
                // TODO(developer) - handle error appropriately
                if (e is AggregateException)
                {
                    Console.WriteLine("Credential Not found");
                }
                else
                {
                    throw;
                }
            }
            return null;
        }
    }
}

تماس‌های متد drives.create بی‌توان هستند.

پارامتر requestId تلاش منطقی برای ایجاد درایو مشترک را مشخص می کند. اگر زمان درخواست به پایان برسد یا یک خطای نامشخص باطن را برگرداند، همان درخواست می تواند تکرار شود. requestId و بدنه درخواست باید ثابت بماند.

اگر درایو مشترک بر اساس درخواست قبلی یا به دلیل تلاش مجدد با موفقیت ایجاد شده باشد، پاسخ عادی برگردانده می شود. گاهی اوقات، مانند پس از مدت زمان طولانی یا اگر بدنه درخواست تغییر کرده است، ممکن است یک خطای 409 برگردانده شود که نشان می دهد requestId باید نادیده گرفته شود.

اعضای درایو مشترک را اضافه یا حذف کنید

اعضای درایو مشترک را با استفاده از منبع permissions اضافه یا حذف کنید.

برای افزودن یک عضو، مجوز را در درایو مشترک ایجاد کنید. همچنین می‌توان از روش‌های مجوز بر روی فایل‌های فردی در درایو مشترک استفاده کرد تا به اعضا امتیازات بیشتری اعطا کند یا به افراد غیرعضو اجازه دهد تا در موارد خاص با یکدیگر همکاری کنند.

برای اطلاعات بیشتر و نمونه کد، به اشتراک گذاری فایل ها، پوشه ها و درایوها مراجعه کنید.

درایو مشترک را حذف کنید

از روش drives.delete برای حذف درایو مشترک استفاده کنید. قبل از حذف درایو مشترک، تمام محتوای درایو مشترک باید به حذف‌شده‌ها منتقل شود یا حذف شود.

درایوهای مشترک را برای مدیران دامنه مدیریت کنید

پارامتر useDomainAdminAccess را با drives و منابع permissions برای مدیریت درایوهای مشترک در سراسر یک سازمان اعمال کنید.

کاربرانی که این روش‌ها را با useDomainAdminAccess=true فراخوانی می‌کنند باید از امتیاز سرپرست Drive and Docs برخوردار باشند. سرپرستان می‌توانند درایوهای مشترک را جستجو کنند یا مجوزهای به‌روزرسانی برای درایوهای مشترک متعلق به سازمانشان را بدون توجه به عضویت سرپرست در هر درایو مشترک مشخصی جستجو کنند.

درایو مشترکی را که سازمان دهنده ندارد بازیابی کنید

مثال زیر نحوه استفاده از این منابع را برای بازیابی درایوهای مشترکی که دیگر سازمان دهنده ندارند نشان می دهد.

جاوا

drive/snippets/drive_v3/src/main/java/RecoverDrive.java
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.DriveScopes;
import com.google.api.services.drive.model.Drive;
import com.google.api.services.drive.model.DriveList;
import com.google.api.services.drive.model.Permission;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/* class to demonstrate use-case of Drive's shared drive without an organizer. */
public class RecoverDrive {

  /**
   * Find all shared drives without an organizer and add one.
   *
   * @param realUser User's email id.
   * @return All shared drives without an organizer.
   * @throws IOException if shared drive not found.
   */
  public static List<Drive> recoverDrives(String realUser)
      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));
    HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(
        credentials);

    // Build a new authorized API client service.
    com.google.api.services.drive.Drive service =
        new com.google.api.services.drive.Drive.Builder(new NetHttpTransport(),
            GsonFactory.getDefaultInstance(),
            requestInitializer)
            .setApplicationName("Drive samples")
            .build();
    List<Drive> drives = new ArrayList<Drive>();

    // Find all shared drives without an organizer and add one.
    // Note: This example does not capture all cases. Shared drives
    // that have an empty group as the sole organizer, or an
    // organizer outside the organization are not captured. A
    // more exhaustive approach would evaluate each shared drive
    // and the associated permissions and groups to ensure an active
    // organizer is assigned.
    String pageToken = null;
    Permission newOrganizerPermission = new Permission()
        .setType("user")
        .setRole("organizer");

    newOrganizerPermission.setEmailAddress(realUser);


    do {
      DriveList result = service.drives().list()
          .setQ("organizerCount = 0")
          .setFields("nextPageToken, drives(id, name)")
          .setUseDomainAdminAccess(true)
          .setPageToken(pageToken)
          .execute();
      for (Drive drive : result.getDrives()) {
        System.out.printf("Found drive without organizer: %s (%s)\n",
            drive.getName(), drive.getId());
        // Note: For improved efficiency, consider batching
        // permission insert requests
        Permission permissionResult = service.permissions()
            .create(drive.getId(), newOrganizerPermission)
            .setUseDomainAdminAccess(true)
            .setSupportsAllDrives(true)
            .setFields("id")
            .execute();
        System.out.printf("Added organizer permission: %s\n",
            permissionResult.getId());

      }

      drives.addAll(result.getDrives());

      pageToken = result.getNextPageToken();
    } while (pageToken != null);

    return drives;
  }
}

پایتون

drive/snippets/drive-v3/drive_snippet/recover_drives.py
import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError


def recover_drives(real_user):
  """Find all shared drives without an organizer and add one.
  Args:
      real_user:User ID for the new organizer.
  Returns:
      drives object

  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)

    drives = []

    # pylint: disable=maybe-no-member
    page_token = None
    new_organizer_permission = {
        "type": "user",
        "role": "organizer",
        "emailAddress": "user@example.com",
    }
    new_organizer_permission["emailAddress"] = real_user

    while True:
      response = (
          service.drives()
          .list(
              q="organizerCount = 0",
              fields="nextPageToken, drives(id, name)",
              useDomainAdminAccess=True,
              pageToken=page_token,
          )
          .execute()
      )
      for drive in response.get("drives", []):
        print(
            "Found shared drive without organizer: "
            f"{drive.get('title')}, {drive.get('id')}"
        )
        permission = (
            service.permissions()
            .create(
                fileId=drive.get("id"),
                body=new_organizer_permission,
                useDomainAdminAccess=True,
                supportsAllDrives=True,
                fields="id",
            )
            .execute()
        )
        print(f'Added organizer permission: {permission.get("id")}')

      drives.extend(response.get("drives", []))
      page_token = response.get("nextPageToken", None)
      if page_token is None:
        break

  except HttpError as error:
    print(f"An error occurred: {error}")

  return drives


if __name__ == "__main__":
  recover_drives(real_user="gduser1@workspacesamples.dev")

Node.js

drive/snippets/drive_v3/drive_snippets/recover_drives.js
/**
 * Find all shared drives without an organizer and add one.
 * @param{string} userEmail user ID to assign ownership to
 * */
async function recoverDrives(userEmail) {
  // 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 drives = [];
  const newOrganizerPermission = {
    type: 'user',
    role: 'organizer',
    emailAddress: userEmail, // Example: 'user@example.com'
  };

  let pageToken = null;
  try {
    const res = await service.drives.list({
      q: 'organizerCount = 0',
      fields: 'nextPageToken, drives(id, name)',
      useDomainAdminAccess: true,
      pageToken: pageToken,
    });
    Array.prototype.push.apply(drives, res.data.items);
    for (const drive of res.data.drives) {
      console.log(
          'Found shared drive without organizer:',
          drive.name,
          drive.id,
      );
      await service.permissions.create({
        resource: newOrganizerPermission,
        fileId: drive.id,
        useDomainAdminAccess: true,
        supportsAllDrives: true,
        fields: 'id',
      });
    }
    pageToken = res.nextPageToken;
  } catch (err) {
    // TODO(developer) - Handle error
    throw err;
  }
  return drives;
}

PHP

drive/snippets/drive_v3/src/DriveRecoverDrives.php
<?php
use Google\Client;
use Google\Service\Drive;
use Ramsey\Uuid\Uuid;
function recoverDrives()
{
   try {
    $client = new Client();
    $client->useApplicationDefaultCredentials();
    $client->addScope(Drive::DRIVE);
    $driveService = new Drive($client);

    $realUser = readline("Enter user email address: ");

    $drives = array();
    // Find all shared drives without an organizer and add one.
    // Note: This example does not capture all cases. Shared drives
    // that have an empty group as the sole organizer, or an
    // organizer outside the organization are not captured. A
    // more exhaustive approach would evaluate each shared drive
    // and the associated permissions and groups to ensure an active
    // organizer is assigned.
    $pageToken = null;
    $newOrganizerPermission = new Drive\Permission(array(
        'type' => 'user',
        'role' => 'organizer',
        'emailAddress' => 'user@example.com'
    ));
    $newOrganizerPermission['emailAddress'] = $realUser;
    do {
        $response = $driveService->drives->listDrives(array(
            'q' => 'organizerCount = 0',
            'fields' => 'nextPageToken, drives(id, name)',
            'useDomainAdminAccess' => true,
            'pageToken' => $pageToken
        ));
        foreach ($response->drives as $drive) {
            printf("Found shared drive without organizer: %s (%s)\n",
                $drive->name, $drive->id);
            $permission = $driveService->permissions->create($drive->id,
                $newOrganizerPermission,
                array(
                    'fields' => 'id',
                    'useDomainAdminAccess' => true,
                    'supportsAllDrives' => true
                ));
            printf("Added organizer permission: %s\n", $permission->id);
        }
        array_push($drives, $response->drives);
        $pageToken = $response->pageToken;
    } while ($pageToken != null);
    return $drives;
   } catch(Exception $e) {
      echo "Error Message: ".$e;
   }
}

دات نت

drive/snippets/drive_v3/DriveV3Snippets/RecoverDrives.cs
using Google.Apis.Auth.OAuth2;
using Google.Apis.Drive.v3;
using Google.Apis.Drive.v3.Data;
using Google.Apis.Services;

namespace DriveV3Snippets
{
    // Class to demonstrate use-case of Drive's shared drive without an organizer.
    public class RecoverDrives
    {
        /// <summary>
        /// Find all shared drives without an organizer and add one.
        /// </summary>
        /// <param name="realUser">User ID for the new organizer.</param>
        /// <returns>all shared drives without an organizer.</returns>
        public static IList<Drive> DriveRecoverDrives(string realUser)
        {
            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"
                });

                var drives = new List<Drive>();
                // Find all shared drives without an organizer and add one.
                // Note: This example does not capture all cases. Shared drives
                // that have an empty group as the sole organizer, or an
                // organizer outside the organization are not captured. A
                // more exhaustive approach would evaluate each shared drive
                // and the associated permissions and groups to ensure an active
                // organizer is assigned.
                string pageToken = null;
                var newOrganizerPermission = new Permission()
                {
                    Type = "user",
                    Role = "organizer",
                    EmailAddress = realUser
                };

                do
                {
                    var request = service.Drives.List();
                    request.UseDomainAdminAccess = true;
                    request.Q = "organizerCount = 0";
                    request.Fields = "nextPageToken, drives(id, name)";
                    request.PageToken = pageToken;
                    var result = request.Execute();
                    foreach (var drive in result.Drives)
                    {
                        Console.WriteLine(("Found abandoned shared drive: {0} ({1})",
                            drive.Name, drive.Id));
                        // Note: For improved efficiency, consider batching
                        // permission insert requests
                        var permissionRequest = service.Permissions.Create(
                            newOrganizerPermission,
                            drive.Id
                        );
                        permissionRequest.UseDomainAdminAccess = true;
                        permissionRequest.SupportsAllDrives = true;
                        permissionRequest.Fields = "id";
                        var permissionResult = permissionRequest.Execute();
                        Console.WriteLine("Added organizer permission: {0}", permissionResult.Id);
                    }

                    pageToken = result.NextPageToken;
                } while (pageToken != null);

                return drives;
            }
            catch (Exception e)
            {
                // TODO(developer) - handle error appropriately
                if (e is AggregateException)
                {
                    Console.WriteLine("Credential Not found");
                }
                else
                {
                    throw;
                }
            }
            return null;
        }
    }
}

از دانلود، چاپ یا کپی کردن فایل توسط کاربران جلوگیری کنید

می‌توانید نحوه دانلود، چاپ و کپی فایل‌ها را در درایوهای مشترک محدود کنید.

برای تعیین اینکه آیا کاربر می‌تواند محدودیت‌های دانلود اعمال شده توسط سازمان‌دهنده درایو مشترک را تغییر دهد، فیلد بولی capabilities.canChangeDownloadRestriction را بررسی کنید. اگر capabilities.canChangeDownloadRestriction روی true تنظیم شده باشد، محدودیت های دانلود را می توان در درایو مشترک اعمال کرد. برای اطلاعات بیشتر، به درک قابلیت‌های فایل مراجعه کنید.

منبع drives شامل مجموعه‌ای از فیلدهای restrictions بولی است که برای نشان دادن اینکه آیا می‌توان یک عمل را روی درایو مشترک انجام داد یا خیر. محدودیت‌ها برای درایو مشترک یا موارد داخل درایو مشترک اعمال می‌شود. محدودیت ها را می توان با استفاده از روش drives.update تنظیم کرد.

برای اعمال محدودیت‌های دانلود در درایو مشترک، یک مدیر درایو مشترک می‌تواند فیلد restrictions.downloadRestriction منبع drives را با استفاده از شی DownloadRestriction تنظیم کند. با تنظیم فیلد بولی restrictedForReaders روی true اعلام می شود که هم دانلود و هم کپی برای خوانندگان محدود شده است. تنظیم فیلد بولی restrictedForWriters روی true اعلام می کند که هم دانلود و هم کپی برای نویسندگان محدود است. توجه داشته باشید که اگر قسمت restrictedForWriters true باشد، دانلود و کپی نیز برای خوانندگان محدود است. به طور مشابه، تنظیم restrictedForWriters روی true و restrictedForReaders به false معادل با تنظیم هم restrictedForWriters و هم restrictedForReaders روی true است.

سازگاری به عقب

با معرفی شیء DownloadRestriction ، عملکرد فیلد بولی restrictions.copyRequiresWriterPermission به روز شد.

اکنون، با تنظیم restrictions.copyRequiresWriterPermission روی true ، فیلد بولین restrictedForReaders شی DownloadRestriction را به true به روز می کند تا اعلام کند که هم دانلود و هم کپی برای خوانندگان محدود شده است.

تنظیم فیلد copyRequiresWriterPermission روی false ، هر دو فیلد restrictedForWriters و restrictedForReaders را روی false به‌روزرسانی می‌کند. این بدان معناست که تنظیمات محدودیت دانلود یا کپی برای همه کاربران حذف شده است.

فیلدهایی که ویژگی های دانلود، چاپ و کپی را کنترل می کنند

جدول زیر فیلدهای منبعی را فهرست می drives که بر عملکرد دانلود، چاپ و کپی تأثیر می گذارد:

میدان توضیحات نسخه
capabilities.canCopy آیا کاربر فعلی می‌تواند فایل‌ها را در درایو مشترک کپی کند یا خیر. v2 و v3
capabilities.canDownload اینکه آیا کاربر فعلی می‌تواند فایل‌ها را در درایو مشترک بارگیری کند یا خیر. v2 و v3
capabilities.canChangeCopyRequiresWriterPermission آیا کاربر فعلی می‌تواند محدودیت copyRequiresWriterPermission یک درایو مشترک را تغییر دهد یا خیر. v2 و v3
capabilities.canResetDriveRestrictions آیا کاربر فعلی می‌تواند محدودیت‌های درایو مشترک را به پیش‌فرض بازنشانی کند یا خیر. v2 و v3
capabilities.canChangeDownloadRestriction اینکه آیا کاربر فعلی می‌تواند محدودیت دانلود درایو مشترک را تغییر دهد یا خیر. فقط نسخه 3
restrictions.copyRequiresWriterPermission آیا گزینه‌های کپی، چاپ یا دانلود فایل‌ها در درایو مشترک برای خوانندگان و نظر دهندگان غیرفعال است. وقتی true ، فیلد با نام مشابه را برای هر فایلی در داخل این درایو مشترک روی true تنظیم می‌کند. v2 و v3
restrictions.downloadRestriction محدودیت‌های دانلود اعمال شده توسط مدیران درایو مشترک. فقط نسخه 3

محدودیت پوشه ها

پوشه های درایو مشترک دارای محدودیت های ذخیره سازی هستند. برای اطلاعات، به محدودیت‌های درایو مشترک در Google Drive مراجعه کنید.

درپوش مورد

هر پوشه در درایو مشترک کاربر دارای محدودیت 500000 مورد از جمله فایل ها، پوشه ها و میانبرها است.

با رسیدن به حد مجاز، درایو مشترک دیگر نمی‌تواند موارد را بپذیرد. برای دریافت مجدد فایل ها، کاربران باید به طور دائم موارد را از پوشه حذف کنند. توجه داشته باشید که موارد موجود در سطل زباله در حد مجاز حساب می‌شوند اما موارد حذف شده برای همیشه اینطور نیست. برای اطلاعات بیشتر، به حذف‌شده‌ها یا حذف فایل‌ها و پوشه‌ها مراجعه کنید.

محدودیت عمق پوشه

یک پوشه در درایو مشترک نمی‌تواند بیش از 100 سطح پوشه تودرتو داشته باشد. این بدان معنی است که یک پوشه فرزند را نمی توان در پوشه ای با عمق بیش از 99 سطح ذخیره کرد. این محدودیت فقط برای پوشه های فرزند اعمال می شود.

تلاش برای افزودن بیش از 100 سطح پوشه، پاسخ کد وضعیت HTTP teamDriveHierarchyTooDeep را برمی‌گرداند.