Class DriveApp

DriveApp

به اسکریپت‌ها اجازه می‌دهد فایل‌ها و پوشه‌ها را در Google Drive ایجاد، پیدا و تغییر دهند. برای دسترسی به فایل‌ها یا پوشه‌ها در درایوهای مشترک، از سرویس Drive پیشرفته استفاده کنید.

// Logs the name of every file in the user's Drive.
var files = DriveApp.getFiles();
while (files.hasNext()) {
  var file = files.next();
  console.log(file.getName());
}

خواص

ویژگی تایپ کنید شرح
Access Access فهرستی که نشان‌دهنده دسته‌هایی از کاربرانی است که می‌توانند به یک فایل یا پوشه دسترسی داشته باشند، علاوه بر هر کاربر فردی که صراحتاً به آنها دسترسی داده شده است.
Permission Permission شماره ای که نشان دهنده مجوزهای اعطا شده به کاربرانی است که می توانند به یک فایل یا پوشه دسترسی داشته باشند، علاوه بر هر کاربر فردی که صراحتاً به آنها دسترسی داده شده است.

مواد و روش ها

روش نوع برگشت توضیح مختصر
continueFileIterator(continuationToken) FileIterator تکرار یک فایل را با استفاده از یک نشانه ادامه از یک تکرار کننده قبلی از سر می گیرد.
continueFolderIterator(continuationToken) FolderIterator تکرار یک پوشه را با استفاده از یک نشانه ادامه از یک تکرار کننده قبلی از سر می گیرد.
createFile(blob) File یک فایل در ریشه درایو کاربر از یک Blob داده دلخواه ایجاد می کند.
createFile(name, content) File یک فایل متنی در ریشه درایو کاربر با نام و محتوای داده شده ایجاد می کند.
createFile(name, content, mimeType) File فایلی با نام، محتویات و نوع MIME داده شده در ریشه درایو کاربر ایجاد می کند.
createFolder(name) Folder پوشه ای در ریشه درایو کاربر با نام داده شده ایجاد می کند.
createShortcut(targetId) File یک میانبر برای شناسه مورد ارائه شده Drive ایجاد می کند و آن را برمی گرداند.
createShortcutForTargetIdAndResourceKey(targetId, targetResourceKey) File یک میانبر برای شناسه مورد و کلید منبع ارائه شده Drive ایجاد می کند و آن را برمی گرداند.
enforceSingleParent(value) void اعمال رفتار SingleParent را برای همه تماس‌هایی که والدین مورد را تحت تأثیر قرار می‌دهند، فعال یا غیرفعال می‌کند.
getFileById(id) File فایل را با شناسه داده شده دریافت می کند.
getFileByIdAndResourceKey(id, resourceKey) File فایل را با شناسه و کلید منبع داده شده دریافت می کند.
getFiles() FileIterator مجموعه ای از تمام فایل ها را در Drive کاربر دریافت می کند.
getFilesByName(name) FileIterator مجموعه‌ای از تمام فایل‌های درایو کاربر را دریافت می‌کند که این نام را دارند.
getFilesByType(mimeType) FileIterator مجموعه ای از تمام فایل های درایو کاربر را دریافت می کند که دارای نوع MIME هستند.
getFolderById(id) Folder پوشه با شناسه داده شده را دریافت می کند.
getFolderByIdAndResourceKey(id, resourceKey) Folder پوشه با شناسه و کلید منبع داده شده را دریافت می کند.
getFolders() FolderIterator مجموعه ای از تمام پوشه ها را در Drive کاربر دریافت می کند.
getFoldersByName(name) FolderIterator مجموعه‌ای از تمام پوشه‌های درایو کاربر را که نام مشخص شده دارند، دریافت می‌کند.
getRootFolder() Folder پوشه را در ریشه درایو کاربر دریافت می کند.
getStorageLimit() Integer تعداد بایت هایی را که کاربر مجاز است در Drive ذخیره کند، دریافت می کند.
getStorageUsed() Integer تعداد بایت هایی را که کاربر در حال حاضر در Drive ذخیره می کند دریافت می کند.
getTrashedFiles() FileIterator مجموعه ای از تمام فایل های موجود در سطل زباله درایو کاربر را دریافت می کند.
getTrashedFolders() FolderIterator مجموعه ای از تمام پوشه های موجود در سطل زباله درایو کاربر را دریافت می کند.
searchFiles(params) FileIterator مجموعه ای از همه فایل ها را در Drive کاربر دریافت می کند که با معیارهای جستجوی داده شده مطابقت دارند.
searchFolders(params) FolderIterator مجموعه ای از تمام پوشه ها را در Drive کاربر دریافت می کند که با معیارهای جستجوی داده شده مطابقت دارند.

مستندات دقیق

continueFileIterator(continuationToken)

تکرار یک فایل را با استفاده از یک نشانه ادامه از یک تکرار کننده قبلی از سر می گیرد. این روش در صورتی مفید است که پردازش یک تکرار کننده در یک اجرا از حداکثر زمان اجرا بیشتر شود. توکن‌های ادامه معمولاً یک هفته معتبر هستند.

// Continues getting a list of all 'Untitled document' files in the user's Drive.
// Creates a file iterator named 'previousIterator'.
const previousIterator = DriveApp.getFilesByName('Untitled document');

// Gets continuation token from the previous file iterator.
const continuationToken = previousIterator.getContinuationToken();

// Creates a new iterator using the continuation token from the previous file iterator.
const newIterator = DriveApp.continueFileIterator(continuationToken);

// Resumes the file iteration using a continuation token from 'firstIterator' and
// logs the file name.
if (newIterator.hasNext()) {
  const file = newIterator.next();
  console.log(file.getName());
}

مولفه های

نام تایپ کنید شرح
continuationToken String یک نشانه ادامه از یک تکرار کننده فایل قبلی.

برگشت

FileIterator - مجموعه‌ای از فایل‌هایی که هنگام تولید توکن Continuation در یک تکرارکننده قبلی باقی می‌مانند.


continueFolderIterator(continuationToken)

تکرار یک پوشه را با استفاده از یک نشانه ادامه از یک تکرار کننده قبلی از سر می گیرد. این روش در صورتی مفید است که پردازش یک تکرار کننده در یک اجرا از حداکثر زمان اجرا بیشتر شود. توکن‌های ادامه معمولاً یک هفته معتبر هستند.

// Continues getting a list of all folders in user's Drive.
// Creates a folder iterator named 'previousIterator'.
const previousIterator = DriveApp.getFolders();

// Gets continuation token from the previous folder iterator.
const continuationToken = previousIterator.getContinuationToken();

// Creates a new iterator using the continuation token from the previous folder iterator.
const newIterator = DriveApp.continueFolderIterator(continuationToken);

// Resumes the folder iteration using a continuation token from the previous iterator and logs
// the folder name.
if (newIterator.hasNext()) {
  const folder = newIterator.next();
  console.log(folder.getName());
}

مولفه های

نام تایپ کنید شرح
continuationToken String یک نشانه ادامه از یک تکرارکننده پوشه قبلی.

برگشت

FolderIterator - مجموعه‌ای از پوشه‌ها که در زمان تولید توکن ادامه در یک تکرارکننده قبلی باقی مانده‌اند.


createFile(blob)

یک فایل در ریشه درایو کاربر از یک Blob داده دلخواه ایجاد می کند.

// Create an image file in Google Drive using the Maps service.
var blob = Maps.newStaticMap().setCenter('76 9th Avenue, New York NY').getBlob();
DriveApp.createFile(blob);

مولفه های

نام تایپ کنید شرح
blob BlobSource داده های فایل جدید

برگشت

File - فایل جدید.

مجوز

اسکریپت هایی که از این روش استفاده می کنند نیاز به مجوز با یک یا چند مورد از حوزه های زیر دارند:

  • https://www.googleapis.com/auth/drive

createFile(name, content)

یک فایل متنی در ریشه درایو کاربر با نام و محتوای داده شده ایجاد می کند. در صورتی که content بزرگتر از 50 مگابایت باشد، یک استثنا ایجاد می کند.

// Create a text file with the content "Hello, world!"
DriveApp.createFile('New Text File', 'Hello, world!');

مولفه های

نام تایپ کنید شرح
name String نام فایل جدید.
content String محتوای فایل جدید

برگشت

File - فایل جدید.

مجوز

اسکریپت هایی که از این روش استفاده می کنند نیاز به مجوز با یک یا چند مورد از حوزه های زیر دارند:

  • https://www.googleapis.com/auth/drive

createFile(name, content, mimeType)

فایلی با نام، محتویات و نوع MIME داده شده در ریشه درایو کاربر ایجاد می کند. در صورتی که content بزرگتر از 10 مگابایت باشد، یک استثنا ایجاد می کند.

// Create an HTML file with the content "Hello, world!"
DriveApp.createFile('New HTML File', '<b>Hello, world!</b>', MimeType.HTML);

مولفه های

نام تایپ کنید شرح
name String نام فایل جدید.
content String محتوای فایل جدید
mimeType String نوع MIME فایل جدید.

برگشت

File - فایل جدید.

مجوز

اسکریپت هایی که از این روش استفاده می کنند نیاز به مجوز با یک یا چند مورد از حوزه های زیر دارند:

  • https://www.googleapis.com/auth/drive

createFolder(name)

پوشه ای در ریشه درایو کاربر با نام داده شده ایجاد می کند.

مولفه های

نام تایپ کنید شرح
name String نام پوشه جدید.

برگشت

Folder - پوشه جدید.

مجوز

اسکریپت هایی که از این روش استفاده می کنند نیاز به مجوز با یک یا چند مورد از حوزه های زیر دارند:

  • https://www.googleapis.com/auth/drive

createShortcut(targetId)

یک میانبر برای شناسه مورد ارائه شده Drive ایجاد می کند و آن را برمی گرداند.

مولفه های

نام تایپ کنید شرح
targetId String شناسه فایل فایل یا پوشه مورد نظر.

برگشت

File - میانبر جدید.

مجوز

اسکریپت هایی که از این روش استفاده می کنند نیاز به مجوز با یک یا چند مورد از حوزه های زیر دارند:

  • https://www.googleapis.com/auth/drive

createShortcutForTargetIdAndResourceKey(targetId, targetResourceKey)

یک میانبر برای شناسه مورد و کلید منبع ارائه شده Drive ایجاد می کند و آن را برمی گرداند. کلید منبع یک پارامتر اضافی است که باید برای دسترسی به فایل یا پوشه مورد نظر که با استفاده از یک پیوند به اشتراک گذاشته شده است، ارسال شود.

// Creates shortcuts for all folders in the user's drive that have a specific name.
// TODO(developer): Replace 'Test-Folder' with a valid folder name in your drive.
const folders = DriveApp.getFoldersByName('Test-Folder');

// Iterates through all folders named 'Test-Folder'.
while (folders.hasNext()) {
  const folder = folders.next();

  // Creates a shortcut to the provided Drive item ID and resource key, and returns it.
  DriveApp.createShortcutForTargetIdAndResourceKey(folder.getId(), folder.getResourceKey());
}

مولفه های

نام تایپ کنید شرح
targetId String شناسه فایل یا پوشه مورد نظر.
targetResourceKey String کلید منبع فایل یا پوشه مورد نظر.

برگشت

File - میانبر جدید.

مجوز

اسکریپت هایی که از این روش استفاده می کنند نیاز به مجوز با یک یا چند مورد از حوزه های زیر دارند:

  • https://www.googleapis.com/auth/drive

enforceSingleParent(value)

اعمال رفتار SingleParent را برای همه تماس‌هایی که والدین مورد را تحت تأثیر قرار می‌دهند، فعال یا غیرفعال می‌کند.

برای جزئیات بیشتر به وبلاگ ساده سازی ساختار پوشه و به اشتراک گذاری مدل های Google Drive مراجعه کنید.

// Enables enforceSingleParent behavior for all calls affecting item parents.
DriveApp.enforceSingleParent(true);

مولفه های

نام تایپ کنید شرح
value Boolean وضعیت جدید پرچم enforceSingleParent.

مجوز

اسکریپت هایی که از این روش استفاده می کنند نیاز به مجوز با یک یا چند مورد از حوزه های زیر دارند:

  • https://www.googleapis.com/auth/drive

getFileById(id)

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

// Gets a list of all files in Google Drive with the given name.
// TODO(developer): Replace 'Test' with your file name.
const files = DriveApp.getFilesByName('Test');

if (files.hasNext()) {
  // Gets the ID of each file in the list.
  const fileId = files.next().getId();

  // Gets the file name using its ID and logs it to the console.
  console.log(DriveApp.getFileById(fileId).getName());
}

مولفه های

نام تایپ کنید شرح
id String شناسه فایل

برگشت

File - فایل با شناسه داده شده.

مجوز

اسکریپت هایی که از این روش استفاده می کنند نیاز به مجوز با یک یا چند مورد از حوزه های زیر دارند:

  • https://www.googleapis.com/auth/drive.readonly
  • https://www.googleapis.com/auth/drive

getFileByIdAndResourceKey(id, resourceKey)

فایل را با شناسه و کلید منبع داده شده دریافت می کند. کلیدهای منبع یک پارامتر اضافی هستند که برای دسترسی به فایل هایی که با استفاده از یک پیوند به اشتراک گذاشته شده اند باید منتقل شوند.

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

// Gets a list of all files in Drive with the given name.
// TODO(developer): Replace 'Test' with your file name.
const files = DriveApp.getFilesByName('Test');
if (files.hasNext()) {

  // Gets the first file in the list.
  const file = files.next();

  // Gets the ID and resource key.
  const key = file.getResourceKey();
  const id = file.getId();

  // Logs the file name to the console using its ID and resource key.
  console.log(DriveApp.getFileByIdAndResourceKey(id, key).getName());
}

مولفه های

نام تایپ کنید شرح
id String شناسه فایل
resourceKey String کلید منبع پوشه.

برگشت

File - فایل با شناسه داده شده.

مجوز

اسکریپت هایی که از این روش استفاده می کنند نیاز به مجوز با یک یا چند مورد از حوزه های زیر دارند:

  • https://www.googleapis.com/auth/drive.readonly
  • https://www.googleapis.com/auth/drive

getFiles()

مجموعه ای از تمام فایل ها را در Drive کاربر دریافت می کند.

برگشت

FileIterator - مجموعه ای از تمام فایل های درایو کاربر.

مجوز

اسکریپت هایی که از این روش استفاده می کنند نیاز به مجوز با یک یا چند مورد از حوزه های زیر دارند:

  • https://www.googleapis.com/auth/drive.readonly
  • https://www.googleapis.com/auth/drive

getFilesByName(name)

مجموعه‌ای از تمام فایل‌های درایو کاربر را دریافت می‌کند که این نام را دارند.

مولفه های

نام تایپ کنید شرح
name String نام فایل هایی که باید پیدا کنید.

برگشت

FileIterator - مجموعه ای از تمام فایل های موجود در درایو کاربر که دارای نام مشخص شده هستند.

مجوز

اسکریپت هایی که از این روش استفاده می کنند نیاز به مجوز با یک یا چند مورد از حوزه های زیر دارند:

  • https://www.googleapis.com/auth/drive.readonly
  • https://www.googleapis.com/auth/drive

getFilesByType(mimeType)

مجموعه ای از تمام فایل های درایو کاربر را دریافت می کند که دارای نوع MIME هستند.

مولفه های

نام تایپ کنید شرح
mimeType String نوع MIME فایل هایی که باید پیدا کنید.

برگشت

FileIterator - مجموعه ای از تمام فایل های درایو کاربر که دارای نوع MIME هستند.

مجوز

اسکریپت هایی که از این روش استفاده می کنند نیاز به مجوز با یک یا چند مورد از حوزه های زیر دارند:

  • https://www.googleapis.com/auth/drive.readonly
  • https://www.googleapis.com/auth/drive

getFolderById(id)

پوشه با شناسه داده شده را دریافت می کند. در صورتی که پوشه وجود نداشته باشد یا کاربر مجوز دسترسی به آن را نداشته باشد، یک استثناء اسکریپت را ایجاد می کند.

مولفه های

نام تایپ کنید شرح
id String شناسه پوشه

برگشت

Folder - پوشه ای با شناسه داده شده.

مجوز

اسکریپت هایی که از این روش استفاده می کنند نیاز به مجوز با یک یا چند مورد از حوزه های زیر دارند:

  • https://www.googleapis.com/auth/drive.readonly
  • https://www.googleapis.com/auth/drive

getFolderByIdAndResourceKey(id, resourceKey)

پوشه با شناسه و کلید منبع داده شده را دریافت می کند. کلیدهای منبع یک پارامتر اضافی هستند که باید برای دسترسی به پوشه هایی که با استفاده از یک پیوند به اشتراک گذاشته شده اند، منتقل شوند.

در صورتی که پوشه وجود نداشته باشد یا کاربر اجازه دسترسی به آن را نداشته باشد، یک استثنای اسکریپت را ایجاد می کند.

مولفه های

نام تایپ کنید شرح
id String شناسه پوشه
resourceKey String کلید منبع پوشه.

برگشت

Folder - پوشه ای با شناسه داده شده.

مجوز

اسکریپت هایی که از این روش استفاده می کنند نیاز به مجوز با یک یا چند مورد از حوزه های زیر دارند:

  • https://www.googleapis.com/auth/drive.readonly
  • https://www.googleapis.com/auth/drive

getFolders()

مجموعه ای از تمام پوشه ها را در Drive کاربر دریافت می کند.

برگشت

FolderIterator - مجموعه ای از تمام پوشه ها در Drive کاربر.

مجوز

اسکریپت هایی که از این روش استفاده می کنند نیاز به مجوز با یک یا چند مورد از حوزه های زیر دارند:

  • https://www.googleapis.com/auth/drive.readonly
  • https://www.googleapis.com/auth/drive

getFoldersByName(name)

مجموعه‌ای از تمام پوشه‌های درایو کاربر را که نام مشخص شده دارند، دریافت می‌کند.

مولفه های

نام تایپ کنید شرح
name String نام پوشه هایی که باید پیدا کنید.

برگشت

FolderIterator - مجموعه ای از تمام پوشه ها در درایو کاربر که دارای نام معین هستند.

مجوز

اسکریپت هایی که از این روش استفاده می کنند نیاز به مجوز با یک یا چند مورد از حوزه های زیر دارند:

  • https://www.googleapis.com/auth/drive.readonly
  • https://www.googleapis.com/auth/drive

getRootFolder()

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

// Gets the user's My Drive folder and logs its name to the console.
console.log(DriveApp.getRootFolder().getName());

// Logs the Drive owner's name to the console.
console.log(DriveApp.getRootFolder().getOwner().getName());

برگشت

Folder - پوشه اصلی درایو کاربر.

مجوز

اسکریپت هایی که از این روش استفاده می کنند نیاز به مجوز با یک یا چند مورد از حوزه های زیر دارند:

  • https://www.googleapis.com/auth/drive.readonly
  • https://www.googleapis.com/auth/drive

getStorageLimit()

تعداد بایت هایی را که کاربر مجاز است در Drive ذخیره کند، دریافت می کند.

// Gets the number of bytes the user can store in Drive and logs it to the console.
console.log(DriveApp.getStorageLimit());

برگشت

Integer - تعداد بایت هایی که کاربر مجاز است در Drive ذخیره کند.

مجوز

اسکریپت هایی که از این روش استفاده می کنند نیاز به مجوز با یک یا چند مورد از حوزه های زیر دارند:

  • https://www.googleapis.com/auth/drive.readonly
  • https://www.googleapis.com/auth/drive

getStorageUsed()

تعداد بایت هایی را که کاربر در حال حاضر در Drive ذخیره می کند دریافت می کند.

// Gets the number of bytes the user is currently storing in Drive and logs it to the console.
console.log(DriveApp.getStorageUsed());

برگشت

Integer - تعداد بایت هایی که کاربر در حال حاضر در Drive ذخیره می کند.

مجوز

اسکریپت هایی که از این روش استفاده می کنند نیاز به مجوز با یک یا چند مورد از حوزه های زیر دارند:

  • https://www.googleapis.com/auth/drive.readonly
  • https://www.googleapis.com/auth/drive

getTrashedFiles()

مجموعه ای از تمام فایل های موجود در سطل زباله درایو کاربر را دریافت می کند.

// Gets a list of all the files in the trash of the user's Drive.
const trashFiles = DriveApp.getTrashedFiles();

// Logs the trash file names to the console.
while (trashFiles.hasNext()) {
  const file = trashFiles.next();
  console.log(file.getName());
}

برگشت

FileIterator - مجموعه ای از فایل ها در سطل زباله.

مجوز

اسکریپت هایی که از این روش استفاده می کنند نیاز به مجوز با یک یا چند مورد از حوزه های زیر دارند:

  • https://www.googleapis.com/auth/drive.readonly
  • https://www.googleapis.com/auth/drive

getTrashedFolders()

مجموعه ای از تمام پوشه های موجود در سطل زباله درایو کاربر را دریافت می کند.

// Gets a collection of all the folders in the trash of the user's Drive.
const trashFolders = DriveApp.getTrashedFolders();

// Logs the trash folder names to the console.
while (trashFolders.hasNext()) {
  const folder = trashFolders.next();
  console.log(folder.getName());
}

برگشت

FolderIterator - مجموعه ای از پوشه ها در سطل زباله.

مجوز

اسکریپت هایی که از این روش استفاده می کنند نیاز به مجوز با یک یا چند مورد از حوزه های زیر دارند:

  • https://www.googleapis.com/auth/drive.readonly
  • https://www.googleapis.com/auth/drive

searchFiles(params)

مجموعه ای از همه فایل ها را در Drive کاربر دریافت می کند که با معیارهای جستجوی داده شده مطابقت دارند. معیارهای جستجو در مستندات Google Drive SDK به تفصیل آمده است. توجه داشته باشید که سرویس Drive از v2 از Drive API استفاده می کند و برخی از فیلدهای جستجو با v3 متفاوت است. تفاوت های زمینه بین v2 و v3 را مرور کنید.

آرگومان params یک رشته پرس و جو است که می تواند حاوی مقادیر رشته باشد، بنابراین مراقب باشید که به درستی از علامت نقل قول فرار کنید (به عنوان مثال "title contains 'Gulliver\\'s Travels'" یا 'title contains "Gulliver\'s Travels"' .

// Logs the name of every file in the user's Drive that modified after February 28,
// 2022 whose name contains "untitled.""
var files = DriveApp.searchFiles(
    'modifiedDate > "2022-02-28" and title contains "untitled"');
while (files.hasNext()) {
  var file = files.next();
  console.log(file.getName());
}

مولفه های

نام تایپ کنید شرح
params String معیارهای جستجو، همانطور که در اسناد Google Drive SDK توضیح داده شده است.

برگشت

FileIterator - مجموعه ای از تمام فایل های درایو کاربر که با معیارهای جستجو مطابقت دارند.

مجوز

اسکریپت هایی که از این روش استفاده می کنند نیاز به مجوز با یک یا چند مورد از حوزه های زیر دارند:

  • https://www.googleapis.com/auth/drive.readonly
  • https://www.googleapis.com/auth/drive

searchFolders(params)

مجموعه ای از تمام پوشه ها را در Drive کاربر دریافت می کند که با معیارهای جستجوی داده شده مطابقت دارند. معیارهای جستجو در مستندات Google Drive SDK به تفصیل آمده است. توجه داشته باشید که سرویس Drive از v2 از Drive API استفاده می کند و برخی از فیلدهای جستجو با v3 متفاوت است. تفاوت های زمینه بین v2 و v3 را مرور کنید.

آرگومان params یک رشته پرس و جو است که می تواند حاوی مقادیر رشته باشد، بنابراین مراقب باشید که به درستی از علامت نقل قول فرار کنید (به عنوان مثال "title contains 'Gulliver\\'s Travels'" یا 'title contains "Gulliver\'s Travels"' .

// Logs the name of every folder in the user's Drive that you own and is starred.
var folders = DriveApp.searchFolders('starred = true and "me" in owners');
while (folders.hasNext()) {
  var folder = folders.next();
  console.log(folder.getName());
}

مولفه های

نام تایپ کنید شرح
params String معیارهای جستجو، همانطور که در اسناد Google Drive SDK توضیح داده شده است.

برگشت

FolderIterator - مجموعه ای از تمام پوشه ها در Drive کاربر که با معیارهای جستجو مطابقت دارند.

مجوز

اسکریپت هایی که از این روش استفاده می کنند نیاز به مجوز با یک یا چند مورد از حوزه های زیر دارند:

  • https://www.googleapis.com/auth/drive.readonly
  • https://www.googleapis.com/auth/drive

روش های منسوخ شده