簡體   English   中英

將Google表格(應用腳本)轉換為有效的CSV格式

[英]Converting Google Sheets (Apps Scripts) to a valid CSV format

我有以下腳本,該腳本主要查看google表格標簽,其中包含一些需要上傳到Google Import API(Google Analytics)的數據:

var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('UK Only');
  var maxRows = ss.getLastRow();
  var maxColumns = ss.getLastColumn();
  var rows = ss.getRange(1, 1, maxRows, maxColumns).getValues();
  var rowsCSV = rows.join("\n")

  var blobData = Utilities.newBlob(rowsCSV, "application/octet-stream", "GA import data");
  try {
    var upload = Analytics.Management.Uploads.uploadData("10131233", "UA-1234576-2", "righfghfghfgT8Dox1nwXDg", blobData);
    Logger.log("Test Data Import Successful");
  }
  catch (e) {
    console.error(e);
  }

輸出如下所示:

ga:productSku,ga:productName,ga:productBrand,ga:productCategoryHierarchy,ga:dimension25,ga:dimension28,ga:dimension31
456456456,example value wit,h char ,that "breaks" csv,fgjfgjf Tjghjghjg,FP,Women,dasdasd
456456456,example value wit,h char ,that "breaks" csv,123123123,FP,Women,dasdasd
456456456,example value wit,h char ,that "breaks" csv,Rdasdasd,FP,asdasdasd

上面顯示了一些會破壞CSV格式的值(逗號和引號)。

如何正確格式化CSV格式,以使其在這些字符上不會損壞?

設法通過以下功能解決了這個問題,我不得不考慮Google API不喜歡的值中的引號和逗號:

function arrayToCSV (twoDiArray) {
    var csvRows = [];
    for (var i = 0; i < twoDiArray.length; ++i) {
        for (var j = 0; j < twoDiArray[i].length; ++j) {
            twoDiArray[i][j] = '\"' + twoDiArray[i][j].replace('"','""') + '\"';
        }
        csvRows.push(twoDiArray[i].join(','));
    }

    return csvRows.join('\r\n');
};

確保通過以下方式調用它:

  var maxRows = ss.getLastRow();
  var maxColumns = ss.getLastColumn();
  var rows = ss.getRange(1, 1, maxRows, maxColumns).getValues();
  var rowsCSV = arrayToCSV(rows);

暫無
暫無

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

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