regex - 无法从附件中的双引号解析工作表中的文本错误
问题描述
我在工作表中运行一个应用程序脚本,它通常将 Gmail 的附件带入谷歌工作表。它大部分时间都有效,但是当数据包含双引号时,它会产生解析错误
我的源数据是这样的数千行:
",05/02/2019,3:13,151:22,5:30,08:11,Enroute,C000003251,219688X01232019,BIN11,,Item1,08:11,0:05,,,0:00
Worker2,34:51,869:25,110:00,"Completed: 168
Suspended: 43
Skipped: 41
",05/02/2019,3:13,151:22,5:30,08:17,OnSite,C000003251,219688X01232019,BIN11,,Item1,,,08:17,0:16,0:30
Worker2,34:51,869:25,110:00,"Completed: 168
Suspended: 43
Skipped: 41
",05/02/2019,3:13,151:22,5:30,08:34,Complete,C000003251,219688X01232019,BIN11,,Item1,,,,,0:00
Worker2,34:51,869:25,110:00,"Completed: 168
Suspended: 43
Skipped: 41
",05/02/2019,3:13,151:22,5:30,08:42,Enroute,C000003252,219689X01232019,BIN11,,Item1,08:42,0:00,,,0:00
Worker2,34:51,869:25,110:00,"Completed: 168
Suspended: 43
Skipped: 41
",05/02/2019,3:13,151:22,5:30,08:42,OnSite,C000003252,219689X01232019,BIN11,,Item1,,,08:42,0:14,0:30
Worker2,34:51,869:25,110:00,"Completed: 168
Suspended: 43
Skipped: 41
",05/02/2019,3:13,151:22,5:30,08:56,Complete,C000003252,219689X01232019,BIN11,,Item1,,,,,0:00
Worker2,34:51,869:25,110:00,"Completed: 168
Suspended: 43
Skipped: 41
",05/02/2019,3:13,151:22,5:30,08:57,Enroute,C000003253,219690X01232019,BIN11,,Item1,08:57,0:05,,,0:00
attachment.setContentTypeFromExtension();
if (attachment.getContentType() === "text/csv") {
var sheet =
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Month1");
var csvData = Utilities.parseCsv(attachment.getDataAsString(), ",");
sheet.clearContents().clearFormats();
sheet.getRange(1, 1, csvData.length,
csvData[0].length).setValues(csvData);
}
我收到此错误:“无法解析文本”我似乎无法弄清楚如何忽略或删除源数据中的双引号
提前致谢!
解决方案
您可以使用这些公式中的任何一个从数据集中删除所有双引号
=ARRAYFORMULA(REGEXREPLACE(A1:A, """", ""))
=ARRAYFORMULA(SUBSTITUTE(A1:A, """", ""))
或者,如果这是您可以使用CTRL+H并完全删除它们的选项。