Как получить хранилище, используемое командным диском?

#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 не укажет вам хранилище?