使用自动列宽(v3 API)从JavaScript将数据导入Google表格

问题描述 投票:0回答:2

我正在编写JavaScript浏览器/客户端代码,需要将基于表/网格的数据上传到Google表格,而我在设置列宽方面遇到了麻烦。数据作为数组数组存储在JavaScript中。

到目前为止,我已尝试将格式化为CSV文件的数据上传到“/ upload / drive / v3 / files”,并将“application / vnd.google-apps.spreadsheet”MIME类型设置为元数据的一部分。这就像我可以在驱动器中打开文件作为Google表格一样。但是,所有列的大小都相同且很小。我的许多单元格包含大约300个字符的文本,因此所有文本都被截断并且看起来很糟糕。

理想情况下,列会调整大小以适应最长的条目。如果我可以设置宽度值也可以。

我需要上传大约100个表格,因此它们需要是单独的文件或单个电子表格上的单独表格。我想减少我需要进行的API调用的数量,因为我有很多用户。

我想到的想法:

  • 如上所述上传然后使用额外的API调用来更改列的尺寸。鉴于大约有100张桌子,这不是我想要做的。
  • 有没有办法使用Drive API创建文件,然后使用Sheets API添加指定列宽的数据?如果可能的话,我宁愿每桌只做一次请求。
  • 将JS中的数据转换为Excel编码或OpenOffice格式数据,并对其进行编码并上传。这会有用吗?如果有其他选择,这感觉很复杂。

如果没有办法让Google表格在上传时自动调整列数,我很惊讶,因为这似乎是导入CSV数据时的常见期望。

javascript csv google-sheets google-drive-sdk
2个回答
0
投票

您想要创建一个包含CSV文件的100张电子表格。将CSV数据中的表导入工作表时,您需要创建新工作表并导入该表。然后,您想要自动修改列的长度。如果我的理解是正确的,这个方法怎么样?

我认为sheets.spreadsheets.batchUpdate可以实现你的目标。 sheets.spreadsheets.batchUpdate可以通过向请求数组添加方法来顺序运行批处理。您的情况的简单示例如下。

Flow :

  1. ### fileId ###的电子表格中创建一个新工作表。 你可以免费提供sheetId作为Int32。此示例使用1000000001
  2. 将数据导入到创建的工作表。 请将CSV数据的每一行导入pasteData。此示例提供2行。 delimiter,
  3. 使用autoResizeDimensions调整列宽。 这样,列宽会根据导入值的长度自动调整大小。

在此示例中,可以通过一个API调用运行这些流。

Endpoint

POST https://sheets.googleapis.com/v4/spreadsheets/### fileId ###:batchUpdate

Request body :

{
  "requests":[
    {"addSheet":{"properties":{"title":"sssample","sheetId":1000000001}}},
    {"pasteData":{"data":"##########sampletext1##########,##########sampletext2##########,##########sampletext3##########","delimiter":",","coordinate":{"rowIndex":0,"columnIndex":0,"sheetId":1000000001}}},
    {"pasteData":{"data":"##########sampletext4##########,##########sampletext5##########,##########sampletext6##########","delimiter":",","coordinate":{"rowIndex":0,"columnIndex":0,"sheetId":1000000001}}},
    {"autoResizeDimensions":{"dimensions":{"dimension":"COLUMNS","sheetId":1000000001,"startIndex":0,"endIndex":3}}}
  ]
}

Note :

  • 请根据您的情况修改以上样品申请正文。
  • 如果您已经创建了工作表,请从请求正文中删除addSheet
  • 我无法知道请求正文中方法数量的限制,因此如果您的情况有限制,请将其分开。

References :

如果我误解你的问题,我很抱歉。


0
投票

要格式化单元格,请查看Basic Formatting指南。它包括有关如何指定宽度大小的说明。其他支持的方法在Sheets API reference中找到,其中包括creating spreadsheets

© www.soinside.com 2019 - 2024. All rights reserved.