Utilities.parseCsv(csv,“;”)也以逗号分隔

时间:2018-07-29 16:44:16

标签: csv parsing google-apps-script

我想使用以;分隔的csv文件。在某些领域,我们有逗号,但是没关系。

示例行如下(注意一列中有一个逗号):

01.02.2018;01.02.2018;"SEPA-Dauerauftrag an";Maier, Herbert;RINP Dauerauftrag Miete Kräpelinstr. 61;DE45700100800225067803;PBNKDEFFXXX;;;;;;;;;-900,00;;EUR

我使用的Google Apps脚本代码如下;

function importCSVFromGoogleDrive() {
  var ss = SpreadsheetApp.openById('<wb id>');
  var outputSheet = ss.getSheetByName('import');

  var fileIterator = DriveApp.getFilesByName("Kontoumsaetze_220_320895600_20180728_155842_DEV.csv");
  var csv = fileIterator.next().getBlob().getDataAsString('ISO-8859-1');
  Logger.log(csv);
  var csvData = Utilities.parseCsv(csv, ";");
  Logger.log("-------------");
  Logger.log(csvData);
}

我只想使用;进行分隔,但无法实现。 GAS还会继续分隔逗号,这会破坏我的程序。

  1. 如果我告诉,,为什么用;隔开。
  2. 如何解决此问题?

以下是日志(在Mayer, Herber中用逗号分隔):

[18-07-29 18:42:22:922 CEST] 01.02.2018;01.02.2018;"SEPA-Dauerauftrag an";Maier, Herbert;RINP Dauerauftrag Miete Kräpelinstr. 61;DE45700100800225067803;PBNKDEFFXXX;;;;;;;;;-900,00;;EUR
[18-07-29 18:42:22:923 CEST] -------------
[18-07-29 18:42:22:924 CEST] [[01.02.2018, 01.02.2018, SEPA-Dauerauftrag an, Maier, Herbert, RINP Dauerauftrag Miete Kräpelinstr. 61, DE45700100800225067803, PBNKDEFFXXX, , , , , , , , , -900,00, , EUR]]

1 个答案:

答案 0 :(得分:1)

当显示对象数据时,这是Apps脚本Logger的失败。

使用此代码:

function csvParseSemiOnly() {
  var csv = '01.02.2018;01.02.2018;"SEPA-Dauerauftrag an";Maier, Herbert;RINP Dauerauftrag Miete Kräpelinstr. 61;DE45700100800225067803;PBNKDEFFXXX;;;;;;;;;-900,00;;EUR';
  var csvData = Utilities.parseCsv(csv, ";");
  console.log({message: "Parsed input", input: csv, output: csvData});
  Logger.log(csvData[0][3]);
}

我得到这个结果:

enter image description here enter image description here

通常,如果您需要检查对象(尤其是嵌套对象),或者从更多最近的脚本执行中查看日志记录活动,则建议使用Stackdriver Logging功能。

您应该查看Apps脚本指南以进行日志记录:
https://developers.google.com/apps-script/guides/logging

值得注意的是,要查看Stackdriver中的日志,您必须能够访问脚本的Google Cloud Platform项目。