导入Google Drive CSV到现有Google Sheet时内容全在首列如何解决
CSV导入Google Sheets全列合并到第一列问题修复方案
问题根因
你使用的代码默认调用Utilities.parseCsv时未指定分隔符、文件编码,若你的CSV文件不符合默认解析规则(逗号分隔、UTF-8编码),就会出现整行内容被识别为单个字段、全部写入第一列的问题。
修复步骤
- 确认CSV文件实际分隔符:打开原始CSV文件查看字段之间的分隔符号,常见非逗号分隔符包括分号
;、制表符\t、竖线|,欧洲地区导出的CSV默认大多使用分号作为分隔符。 - 确认CSV文件编码:中文环境下Windows系统导出的CSV常使用GBK/GB2312编码,直接用默认UTF-8读取会出现乱码,导致解析失败。
修复后完整代码
function importCSVFromGoogleDrive() { var file = DriveApp.getFilesByName("data.csv").next(); // 按实际文件编码修改参数,中文CSV可尝试填'GBK' var csvContent = file.getBlob().getDataAsString('UTF-8'); // 第二个参数修改为你实际的CSV分隔符,比如分号填';',制表符填'\t' var csvData = Utilities.parseCsv(csvContent, ','); var sheet = SpreadsheetApp.getActiveSheet(); // 写入前清空原有内容,避免旧数据干扰 sheet.clearContents(); sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData); }
验证方法
运行代码前可添加一行Logger.log(csvData[0]),执行后查看应用脚本日志,若输出结果为包含10个元素的数组则说明解析正常,若仅输出1个元素则需要重新检查分隔符和编码配置。
该方案同时适配从Google Drive和Gmail附件导入CSV的场景,仅需要将获取文件的逻辑替换为Gmail附件读取逻辑即可,解析规则无需修改。
内容的提问来源于stack exchange,提问作者Shrikant Ravi
相关产品推荐
相关产品推荐

