簡體   English   中英

使用雙引號從郵件 (Gmail) 解析 CSV 和? 使用 Google Apps 腳本的字符

[英]Parsing a CSV from a Mail (Gmail) with double quotes and ? characters with Google Apps Script

我確實使用以下代碼設置了例程以將 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 函數刪除了那些。
  2. 對於我的其他 CSV,我沒有任何問題,但我沒有任何雙引號。 有人可以解釋一下 CSV 的區別,一次是用雙引號,一次是沒有?
  3. 我怎樣才能正確處理這些數據,以便將沒有“”的數據放入電子表格中?
  4. 為什么我看到一些? 符號(請查看 fx 輸入字段,第 1 行和第 7 行)以及如何刪除它們? 導出應該沒有任何格式(CSV)並且在文本編輯器中我確實正常看到所有值 - 沒有任何?

問題是編碼。 文件的正確編碼是UTF-16,而.getDataAsString()的標准編碼是UTF-8。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM