Я пишу приложение WinForms. Я создал файл шаблона Google Doc, который содержит заполнители, такие как {{name}} для различных текстовых элементов. Я могу успешно сделать копию этого документа и использовать BatchUpdateDocumentRequest для их точного изменения.
Однако у меня также есть встроенное изображение в документе. Я могу получить objectId для этого изображения просто отлично. Я либо хочу заменить это изображение другим, либо удалить его из моего шаблона, а затем добавить новое изображение в конец документа. В обоих случаях классы InsertInlineImage или ReplaceImage требуют URI изображения для вставки или замены. Вот где у меня проблема.
Само изображение было получено из элемента управления на WinForms. Это на самом деле график. Я сохранил изображение в формате PNG, так как знаю, что это один из форматов, поддерживаемых Google drive / docs. Я подумал, чтобы использовать его в пакетном обновлении, мне нужно было сначала загрузить его, поэтому я сделал это и получил в ответ его идентификатор файла и веб-ссылку.
Я не заблокирован каким-либо конкретным способомделать это. Первоначально я пытался создать HTML-файл, загрузить его, но затем он лишил его изображения, поэтому он стал бесполезным, поэтому я переключился на использование Google Doc в качестве шаблона и просто попытался заменить элементы в нем. Это шло хорошо, пока я не добрался до изображения.
По сути, независимо от того, что я пытаюсь указать в качестве URI, он говорит, что файл не в поддерживаемом формате.
Насколько я могу судить, Google ожидает, что URI на самом деле будет заканчиваться на .png или будет реальной ссылкой, а не URL-адресом загрузки, который вы получите с Google Диска.
Вот пример кода, который я использую, чтобы попытаться заменить изображение. StrImageObjectId - это objectId встроенного объекта в копии шаблона документа, который я хочу заменить. Uri - это то, от чего Google должен вытащить новое изображение. Я счастлив вытащить его из моего локального компьютера или Google Диска, если бы я только мог заставить его принять это каким-либо образом.
BatchUpdateDocumentRequest batchUpdateRequest = new BatchUpdateDocumentRequest {
Requests = new List<Google.Apis.Docs.v1.Data.Request>()
};
request = new Google.Apis.Docs.v1.Data.Request {
ReplaceImage = new ReplaceImageRequest() {
ImageObjectId = strImageObjectId,
Uri = strChartWebContentLink
}
};
batchUpdateRequest.Requests.Add(request);
DocumentsResource.BatchUpdateRequest updateRequest =
sDocsService.Documents.BatchUpdate(batchUpdateRequest, strCopyFileId);
BatchUpdateDocumentResponse updateResponse = updateRequest.Execute();
Я счастлив использовать любой метод, который приведет меня к точке, где яВ итоге получился Документ Google на Google Диске, основанный на шаблоне, в котором я могу заменить различные текстовые элементы, но самое главное добавить / заменить изображение.
Большое спасибо за совет.