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);
}