代码之家  ›  专栏  ›  技术社区  ›  fstr

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

  •  0
  • fstr  · 技术社区  · 6 年前

    我正在编写JavaScript浏览器/客户端代码,需要将基于表/网格的数据上传到Google Sheets,而我在合理设置列宽方面遇到了问题。数据以数组的形式存储在JavaScript中。

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

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

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

    我想到的想法:

    • 如上所述上载,然后使用额外的API调用来更改列的维度。这不是我想做的,因为这里有大约100张桌子。

    • 是否有方法使用驱动器API创建文件,然后使用工作表API添加指定列宽的数据?如果可能的话,我宁愿每桌都有一个请求。

    • 将JS中的数据转换为Excel或OpenOfffice格式的数据,并对列宽进行编码并上传。这样行吗?如果有其他选择,这感觉很复杂。

    如果没有办法让Google Sheets在上传时自动调整列的大小,我会感到惊讶,因为导入CSV数据时这似乎是一种常见的期望。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Tanaike    6 年前

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

    我以为 sheets.spreadsheets.batchUpdate 可以实现你的处境。 被单。电子表格。批次更新 可以通过向请求数组添加方法来顺序运行批处理过程。下面是针对您的情况的一个简单示例。

    流量:

    1. 在的电子表格中创建新工作表 ### fileId ### .
      • 你可以自由地给予 sheetId 与Int32相同。此示例使用 1000000001 .
    2. 将数据导入到创建的图纸中。
      • 请将每行CSV数据导入到 pasteData . 此示例提供2行。
      • delimiter , .
    3. 使用调整列宽的大小 autoResizeDimensions .
      • 这样,列宽将根据导入值的长度自动调整大小。

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

    端点

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

    请求正文:

    {
      "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}}}
      ]
    }
    

    注:

    • 请根据您的情况修改上述示例请求正文。
    • 如果已创建图纸,请删除 addSheet 来自请求正文。
    • 我无法知道请求正文中方法数量的限制,因此,如果您的情况有限制,请将其分开。

    参考文献:

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

        2
  •  0
  •   noogui    6 年前

    要设置单元格格式,请检查 Basic Formatting 指导它包括有关如何指定宽度大小的说明。其他受支持的方法可以在 Sheets API reference 其中包括 creating spreadsheets .