我想更新驱动器文件夹中的现有电子表格,但在实现http请求时遇到问题。我遵循了文档并能够更新电子表格,但我尝试用JSON发送的请求正文总是转换为CSV。这导致JSON部分根据当前逗号分布到各个单元格中。
例如cell1=";{key1"和cell2="value1"等等。但是,这使我无法指定工作表的样式和单元格中的值。
我发现了发送多部分请求的可能性,然而,这会导致相同的结果。现在,第一个边界字符串和直到第一个逗号的初始信息都包含在第一个单元格中,其余部分根据现有逗号进行划分。
我想做的是发送一个HTTP请求,其主体由一个指定信息的JSON-File组成,用于Google的Sheets API中描述的电子表格,但找不到我当前的错误。即使mimetype设置为"application/vnd.google-apps.spreadsheet"
,json也总是转换为csv。
mimetype"application/vnd.谷歌应用程序.电子表格">
如果有问题的文件是实际的谷歌工作表文件类型。例如,mime类型为"application/vnd.google-apps.spreadsheet"
。然后你应该通过谷歌表单api来更新它。其他方式是通过谷歌驱动器更新它,你需要将文件本身加载到文件流中,然后以这种方式上传。你不能选择什么部件上传与驱动器它的全部或没有。驱动器没有格式化单元格之类的东西的能力,它只是上传原始文件数据。
Mimetype";text/plain">
如果该文件实际上是csv文件,因此mime类型为"text/plain"
,则可以直接更新文本。通过将文本转换为流。
你还没有说你在用什么语言,所以这里是我的C#示例。代码是从如何上传到谷歌驱动器API从内存与C#
var uploadString = "Test";
var fileName = "ploadFileString.txt";
// Upload file Metadata
var fileMetadata = new Google.Apis.Drive.v3.Data.File()
{
Name = fileName,
Parents = new List<string>() { "1R_QjyKyvET838G6loFSRu27C-3ASMJJa" } // folder to upload the file to
};
var fsSource = new MemoryStream(Encoding.UTF8.GetBytes(uploadString ?? ""));
string uploadedFileId;
// Create a new file, with metadata and stream.
var request = service.Files.Create(fileMetadata, fsSource, "text/plain");
request.Fields = "*";
var results = await request.UploadAsync(CancellationToken.None);
if (results.Status == UploadStatus.Failed)
{
Console.WriteLine($"Error uploading file: {results.Exception.Message}");
}
// the file id of the new file we created
uploadedFileId = request.ResponseBody?.Id;