csv - 在 Google 表格中打开 CSV 文件时,某些行被合并到一个单元格中
问题描述
我有一个网络爬虫创建输出到 csv 的链接和属性的索引,目的是在 Google 表格中打开它并使用过滤器视图对其进行排序和搜索。
但是,当我在表格中打开 csv 时,多组线条被卡在一个单元格中。
我已经共享了一个测试文件,该文件演示了我的问题,并在此处提供了图像中的结果
我也尝试用 LibreOffice 打开它并得到了相同的结果。
任何帮助都会很棒。
解决方案
当我看到您的 CSV 数据时,我注意到在第 6 行有A Single Phone Call
,"
没有关闭。我认为这可能是您的问题的原因。在这种情况下,当使用 检索 CSV 数据时IMPORTDATA
,我确认了与您的情况相同的问题。
但是,我确认当Utilities.parseCsv()
使用 Google Apps Script 时,您的 CSV 数据可以被正确解析。那么下面的示例脚本怎么样?
示例脚本 1:
在此示例中,Google Apps 脚本用作自定义函数。在这种情况下,请使用 CSV 文件的文件 ID。请将以下脚本复制并粘贴到 Google 电子表格的脚本编辑器中,并将自定义函数放入=SAMPLE("1WB2PZ1vyuarBSzjETkbWmn744ZC41Ps8")
一个单元格中。1WB2PZ1vyuarBSzjETkbWmn744ZC41Ps8
是示例 CSV 文件的文件 ID。
const SAMPLE = fileId => Utilities
.parseCsv(
UrlFetchApp.fetch(`https://drive.google.com/uc?export=download&id=${fileId}`).getContentText()
);
如果要直接从 URL 中检索 CSV 数据,还可以使用以下脚本。
const SAMPLE = url => Utilities.parseCsv(UrlFetchApp.fetch(url).getContentText());
使用此脚本时,会得到以下结果。
示例脚本 2:
在此示例中,Google Apps 脚本使用脚本编辑器运行。请将以下脚本复制并粘贴到 Google 电子表格的脚本编辑器中并设置变量,然后运行myFunction
. 通过这种方式,CSV 数据被解析并放入电子表格。
function myFunction() {
const sheetName = "Sheet1"; // Please set the sheet name.
const id = "1WB2PZ1vyuarBSzjETkbWmn744ZC41Ps8"; // This is the file ID of your sample CSV file.
// 1. Retrieve CSV data.
const csv = DriveApp.getFileById(id).getBlob().getDataAsString();
// 2. Parse CSV data to an array.
const ar = Utilities.parseCsv(csv);
// 3. Put the array to the Spreadsheet.
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
sheet.getRange(1, 1, ar.length, ar[0].length).setValues(ar);
}
- 此示例脚本与上面的结果相同。
参考:
推荐阅读
- html - Flexbox 在重新加载后改变大小
- c# - 关于 TYPE 对象的 2 个问题。Type 对象是引用类型吗?如果这是一个抽象类,我们如何创建 TYPE 对象?
- bash - 如何使用 bash 运行 `mkdir -m -p`?
- mysql - MySQL 数据库中的星号 sip.conf
- nativescript - 如何在 iOS 设备上禁用电子邮件类型的自动大写
- type-conversion - MapStruct:如何在映射器中指定应在目标列表中创建的对象类型?
- git - 恢复错误的 git checkout
- rss - 在 gatsby-plugin-feed 中获取自定义字段
- java - 解析 XML 时如何禁用 XInclude?
- maven - 如何使用 rpm-maven-plugin 配置 %ghost 文件