#c# #google-drive-api #google-drive-shared-drive
#c# #google-drive-api #google-drive-shared-drive
Вопрос:
Я пытаюсь получить общее хранилище, используемое всеми моими дисками Google Workspace Team (мне также нужно подсчитать количество двоичных файлов / файлов Google doc на диске Team — я думаю, что я с этим справился). Я могу получить список всех моих командных дисков, без проблем, однако я не вижу никакого способа надежно получить общее хранилище, потребляемое командным диском программно (я не знаю, почему в admin.google.com консоль для этого). Похоже [About][1]
, что у класса есть функция storageQuota, которая была бы идеальной, однако, похоже, это применимо только к «Моему диску», и, похоже, я не могу получить доступ к этому для командного диска.
Итак, я решил, что просто переберу все файлы и папки на диске Team и просто использую атрибут «size» объекта File (обратите внимание, что я делаю это на C #). Похоже, для этого мне нужно добавить свою учетную запись в качестве организатора в разрешениях Team Drive, тогда я смогу получить доступ к файлам и папкам. Похоже, это работает. Однако, когда я перебираю файлы, появляется много файлов (которые все кажутся файлами Google doc, т.Е. листы, презентация и т. Д.), Которые отображаются как null. Двоичные файлы похоже, я могу получить данные о размере. Вот код, который я использую для перебора файлов диска Team:
//create request
request.Corpora = "drive";
request.SupportsAllDrives = true;
request.Fields = "nextPageToken, files(id,name,parents,size,mimeType,quotaBytesUsed,modifiedTime,exportLinks,webContentLink,webViewLink)";
request.SupportsTeamDrives = true;
request.DriveId = td.Id;
request.PageSize = 1000;
request.IncludeItemsFromAllDrives = true;
//request.TeamDriveId = td.Id;
//request.IncludeTeamDriveItems = true;
request.Q = "'" td.Id "' in parents and trashed=false";
//request.Q = "mimeType='application/vnd.google-apps.folder'";
var response = request.Execute();
IList<Google.Apis.Drive.v3.Data.File> files = response.Files;
enter code here
Я получаю свой список файлов / папок и перебираю их.
foreach (var-файл в файлах)
{
// Консоль.WriteLine(«Name: {0} MimeType: {1}», файл.Имя, файл.MimeType);
//this is a folder recursively traverse
if (file.MimeType == "application/vnd.google-apps.folder")
{
stop2 = 1;
var ret = await TraverseFolder2(service, file, td);
local_sizebytes = local_sizebytes ret.sizebytes;
local_totalfiles = local_totalfiles ret.totalfiles;
}
else
{
//not a folder
//totalfiles ;
local_totalfiles ;
long? filesize = file.Size;
if (filesize.HasValue == true)
{
local_sizebytes = local_sizebytes (long)filesize.Value;
}
else
{
stop2 = 1;
}
}
}
enter code here
Я заметил, что когда MimeType является документом Google, я не могу получить размер (file.Size), хотя документ API, похоже, указывает, что я должен это сделать. Может кто-нибудь указать мне правильное направление, как правильно определить размер файла Google doc? Я использую версию V3 API.
Комментарии:
1. И метод about.get не укажет вам хранилище?