C# Google Drive SDK Почему я не могу найти элемент по его названию?

У меня странная проблема.

У меня есть несколько папок в моем Google Диске, и одна из них называется myFolder, В этой папке установлена ​​опция видимости Anyone with the link,

Я хочу получить этот идентификатор папки. Для этого у меня есть следующий код

ChildrenResource.ListRequest request = Google_DriveService.Children.List("root");

request.Q = "mimeType='application/vnd.google-apps.folder' and title='myFolder' and trashed=false";

try
    {
        ChildList children = request.Fetch();

        return children.Items;
    }
    catch (Exception e)
    {
        throw e;
    }

который выдает ошибку 500. Но если я изменю запрос на "mimeType='application/vnd.google-apps.folder' and trashed=false"; Я получаю список папок, но нет никакой возможности узнать, какая папка в этом списке является той, которая мне нужна.

Так

1) почему я получаю эту ошибку 500, если я передаю имя папки внутри этого запроса?

2) Как получить информацию о папке (например, ее имя), если у меня есть идентификатор?

РЕДАКТИРОВАТЬ

Хорошо, я изменил код, как вы предложили, ребята, теперь я не получаю сообщение об ошибке, но папка все еще не найдена. Он находится в root папка.

 var request = Google_DriveService.Files.List();

 request.Q = "mimeType='application/vnd.google-apps.folder' and title='myFolder' and trashed=false";

 var children = request.Fetch();

 return children.Items.Count > 0 ? children.Items.First().Id : null;

3 ответа

1 Вероятно, ошибка. Попробуйте выполнить запрос с https://developers.google.com/drive/v2/reference/files/list для подтверждения.

Какую сферу вы используете? Если drive.file, попробуйте перейти на диск

2 В возвращенном JSON ищите "заголовок". Если вам нужно убедиться, что это правильный файл, вам, возможно, нужно проверить родительский идентификатор против родительского идентификатора моей папки.

Я думаю, вам нужно удалить рут у вас там. Это работает. Не уверен, какой клиент API вы используете. Это с использованием последних.

FilesResource.ListRequest request = service.Files.List();
request.MaxResults = 1000;
request.Q = "mimeType='application/vnd.google-apps.folder' and trashed=false and title='myFolder'";

Вот фрагмент кода, использующий клиентскую библиотеку Google.Apis.Drice.V2, которую можно использовать для поиска папки на Google Диске.

using Google.Apis.Drive.v2;
using Google.Apis.Drive.v2.Data;
using Google.Apis.Discovery;
using Google.Apis.Upload;   

string search = string.Format("title = '{0}' and mimeType = 
'application/vnd.google-apps.folder'",folderName);

    IList<File> files = new List<File>();                
    try
        {

            //List all of the files and directories for the current user.  
            // Documentation: https://developers.google.com/drive/v2/reference/files/list
            FilesResource.ListRequest list = _service.Files.List();
            list.MaxResults = 1000;
            if (search != null)
            {
                list.Q = search;
            }
            FileList filesFeed = list.Execute();

            //// Loop through until we arrive at an empty page
            while (filesFeed.Items != null)
            {
                // Adding each item  to the list.
                foreach (File item in filesFeed.Items)
                {
                    files.Add(item);
                }

                // We will know we are on the last page when the next page token is
                // null.
                // If this is the case, break.
                if (filesFeed.NextPageToken == null)
                {
                    break;
                }

                // Prepare the next page of results
                list.PageToken = filesFeed.NextPageToken;

                // Execute and process the next page request
                filesFeed = list.Execute();
            }
        }
        catch (Exception ex)
        {
            // In the event there is an error with the request.
            Console.WriteLine(ex.Message);
        }
Другие вопросы по тегам