【问题标题】:How can I include commas when creating CSV files with Google apps script?使用 Google Apps 脚本创建 CSV 文件时如何包含逗号?
【发布时间】:2019-06-03 20:11:21
【问题描述】:

我正在开发一些代码来使用 Google 应用脚本创建 CSV 文件。我知道如何创建 CSV 文件,但是当字符串值有逗号时我遇到了问题。如果数组元素有逗号,则在创建 CSV 文件时这些元素将被分隔。

我正在编写此代码,因为我想将 CSV 文件上传到 EC 网站,例如 eBay、amazon 等。所以格式是他们固定的。我无法避免在数组元素中使用逗号。

我尝试将“”放在大括号逗号上(例如:“,”),但它根本不起作用。 我也尝试使用不同的分隔符,但也没有用。

我的代码如下:

  var folderId = DriveFolderId
  var array = [
    ["title1", "title2", "title3"],
    ["value1", "value2-1,value2-2", "value3"],
  ]
  for (var i in array) {
    array[i] = array[i].join(",");
  }
  var array = array.join("\n");
  var folder = DriveApp.getFolderById(folderId);
  var now = Utilities.formatDate(new Date(), "JST", "yyyy_MM_dd_HH_mm_ss");
  folder.createFile(now + ".csv", array, "text/csv");

上面的代码可以正常工作,除非数组元素中没有逗号。 如果它们有逗号,则在创建 CSV 文件时将它们分开。 在上面的例子中,它创建了一个像这样的文件:

[标题1],[标题2],[标题3]

[value1],[value2-1],[value2-2],[value3]

我希望它是这样的:

[标题1],[标题2],[标题3]

[value1],[value2-1,value2-2],[value3]

当它执行folder.createFile(now + ".csv", array, "text/csv")时,它毁了我所有的努力。

有人知道如何解决这个问题吗?

【问题讨论】:

  • 您需要对特殊字符进行转义。这不是 Google Apps 脚本独有的问题
  • 感谢您的评论,tehhowch。我知道我必须逃避一些角色,但我不知道哪些以及如何。

标签: csv google-apps-script


【解决方案1】:
  • 您想使用问题中的脚本创建如下所示的 CSV 文件。

如果我的理解是正确的,那么这次修改呢?

修改脚本:

从:
var array = [
  ["title1", "title2", "title3"],
  ["value1", "value2-1,value2-2", "value3"],
]
for (var i in array) {
  array[i] = array[i].join(",");
}
到:
var array = [
  ["title1", "title2", "title3"],
  ["value1", "value2-1,value2-2", "value3"],
];

array = array.map(function(e) {return e.map(function(f) {return ~f.indexOf(",") ? '"' + f + '"' : f})}); // Added

for (var i in array) {
  array[i] = array[i].join(",");
}
  • 在本次修改中,当值为,时,"value2-1,value2-2"被转换为"\"value2-1,value2-2\""。这样就可以检索到如上图的结果了。

参考:

如果这不是您想要的结果,我深表歉意。

【讨论】:

  • 感谢您的评论,田池。我添加了你的代码,它成功了!你是我的救星。我见过 map() 方法,但我自己没有使用过。感谢您提供新知识。
  • @kurtman 欢迎。谢谢你让我知道。我很高兴你的问题得到了解决。如果您的问题得到解决,请按接受按钮。与您有相同问题的其他人也可以将您的问题作为可以解决的问题。如果找不到按钮,请随时告诉我。 stackoverflow.com/help/accepted-answer
猜你喜欢
  • 2019-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多