Код: Выделить всё
Document-IDЯ попробовал использовать этот метод ниже, чтобы получить DriveItem (по его DriveItemId< /code>) с помощью поиска по запросу:
Код: Выделить всё
public async Task GetDriveItemIdAsync(string driveId, string docId)
{
try
{
var query = $"Dokument-ID:{docId}";
var results = await _graphClient.Drives[driveId].SearchWithQ(query).GetAsSearchWithQGetResponseAsync();
if (results.Value.Count == 1)
{
_logger.Info($"Found one document with documentId '{docId}' in drive '{driveId}'.");
return results.Value.FirstOrDefault().Id;
}
else if (results.Value.Count == 0)
{
_logger.Info($"No document with documentId '{docId}' found in drive '{driveId}'.");
throw new Exception($"No document with documentId '{docId}' found in drive '{driveId}'.");
}
else
{
var driveItemId = results.Value.FirstOrDefault().Id;
var message = "Dokumente: \n";
foreach (var item in results.Value)
{
message += $"Name: {item.Name}, Id: {item.Id}\n";
}
_logger.Error($"More than one document with documentId '{docId}' found in drive '{driveId}'. Returning the first item with driveItemId == '{driveItemId}' \n{message}");
MessageBox.Show($"Mehr als ein Dokument mit der DocumentId '{docId}' in Laufwerk '{driveId}' gefunden. Melden Sie sich sofort bei der IT und zeigen Sie diese Fehlermeldung. \n{message}", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);
return driveItemId;
}
}
catch (ServiceException ex)
{
_logger.Error($"Error while trying to get last version of item with documentId '{docId}' in drive '{driveId}'. Exception: '{ex}'");
throw;
}
}
Он ведет себя очень странно, возможно, потому, что мой запрос еще неверен.
Спасибо за вашу помощь, я также открыт для лучшего решения для получения DriveItemId по DocumentID в библиотеке SharePoint.
Изменить:
Использование фильтра тоже может быть решением, но я думаю, что ответ в этом сообщении больше недействителен, не удалось найти ничего в документация об этом.
Подробнее здесь: https://stackoverflow.com/questions/786 ... ocument-id
Мобильная версия