C# Копирование документа Google Docs через API - PullRequest
0 голосов
/ 04 февраля 2020

Я трачу часы на то, чтобы узнать, как скопировать Документы Google (текстовый документ!) ..

Я пробовал несколько решений, но ни одно из них не помогло.

Также documentId ! = fileId , что делает процесс немного странным.

Код, который я пробовал до сих пор:

DriveService service = GetDriveService();
DocsService docsService = GetDocsService();
DocumentsResource.GetRequest request = docsService.Documents.Get(fileId);

var GoogleDocument = request.Execute(); //Returns the correct File

FilesResource.GetRequest getFileRequest = service.Files.Get(fileId);

var GoogleFile = getFileRequest.Execute(); //Error - see below

Ошибка:

Google.GoogleApiException: "Not Found"

Inner Exception
JsonReaderException: Error parsing NaN value. Path '', line 1, position 1.

Diese Ausnahme wurde ursprünglich bei dieser Aufrufliste ausgelöst:
    Newtonsoft.Json.JsonTextReader.ParseNumberNaN(Newtonsoft.Json.ReadType, bool)
    Newtonsoft.Json.JsonTextReader.ParseValue()
    Newtonsoft.Json.JsonTextReader.Read()
    Newtonsoft.Json.JsonReader.ReadForType(Newtonsoft.Json.Serialization.JsonContract, bool)
    Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(Newtonsoft.Json.JsonReader, System.Type, bool)
    Newtonsoft.Json.JsonSerializer.DeserializeInternal(Newtonsoft.Json.JsonReader, System.Type)
    Newtonsoft.Json.JsonConvert.DeserializeObject(string, System.Type, Newtonsoft.Json.JsonSerializerSettings)
    Google.Apis.Services.BaseClientService.DeserializeError(System.Net.Http.HttpResponseMessage)

fileId:

string fileId = "1N9YQSW_n5DAs1uchCz1GTnsIb-CmvhS-KnlsOWok-vs";

Что мне не хватает?

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

Вы делаете GetRequest вместо CopyRequest. Кроме того, вам нужен только Drive API для копирования файла. Из документации и Quickstart :

var service = new DriveService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = ApplicationName,
            });
FilesResource.CopyRequest request = service.Files.Copy(fileId);
request.Execute();

Также DocumentId - это fileId :

enter image description here Результат выполнения Get API Call:

enter image description here

0 голосов
/ 04 февраля 2020

Вам следует попробовать онлайн-тестирование запросов от Google. И там вы увидите, происходит ли проблема в вашем коде или нет ... https://developers.google.com/drive/api/v2/reference/files/get?apix=true#try -it Когда я набираю ваш идентификатор, он не работает.

...