使用Google Apps脚本解析带有双引号和?字符的邮件(Gmail)中的CSV

stszievb  于 2023-01-10  发布在  Go
关注(0)|答案(1)|浏览(163)

我确实使用以下代码设置了例程,将CSV解析为特定的电子表格:

function updateGmvAndNmv() {
  const threads = GmailApp.search("from:(sender@xxx.de) subject:(uniqueHeader)");
  const messages = threads[0].getMessages();
  const length = messages.length;
  const lastMessage = messages[length - 1];
  const attachemnt = lastMessage.getAttachments()[0];

  const csvData = Utilities.parseCsv(attachemnt.getDataAsString(), ",");

  const ss = SpreadsheetApp.openById("spreadsheetID").getSheetByName("sheetName")
  const ssOriginalRange = ss.getRange("A:E");
  const ssToPaste = ss.getRange(1,1,csvData.length,csvData[0].length);

  ssOriginalRange.clear();
  ssToPaste.setValues(csvData)
}

使用我想要解析的最新CSV时,我遇到了一个问题,我被卡住了。我尝试修改发送报告的应用程序中的设置,但我无法更改CSV的构造方式。当我使用文本编辑器查看CSV时,我看到了以下内容:

GMV and NMV per partner

"Merchant",,"NMV","GMV bef Cancellation","GMV bef Return"

当我让上面的代码运行时,它获取文件并在我的电子表格中输出以下内容:Spreadsheet Example
这就引出了以下问题:
1.为什么在第5行有“”(双引号)?我假设parseCsv函数删除了它们。
1.对于我的其他CSV我没有任何问题,但在那里我没有任何双引号。有人能解释一下CSV的区别吗,一次有双引号,一次没有?
1.如何正确处理此数据,以便将不带“”的数据放入电子表格?
1.为什么我会看到一些?符号(请看fx输入字段,第1行和第7行),我该如何去掉它们?导出应该没有任何格式(CSV),在文本编辑器中我可以正常看到所有值-没有任何?。

h7appiyu

h7appiyu1#

问题是编码。文件的正确编码是UTF-16,而.getDataAsString()的标准编码是UTF-8。

相关问题