2015-03-19 36 views
0

因此,我試圖從Google Spreadsheet中取出工作表並將其另存爲.CSV文件,就像您手動執行的操作一樣。它工作得相當好,但我遇到了一個新行/換行/回車等問題。我已經使用並修改了Google's solution以及一些滿足我目前需求的堆棧溢出資源,但是我一直在這個新的問題。通過google腳本以CSV格式保存處理換行符

問題: Problem

的原因: Cause

我會注意到,如果我手動保存從谷歌電子表格它看起來很好的CSV文件,但你在事業上的圖片看到,盒子這個問題我無法解決。

我當前的代碼:

function convertRangeToCsvFile_(csvFileName, sheet) { 
    // get available data range in the spreadsheet 
    var activeRange = sheet.getDataRange(); 
    try { 
    var data = activeRange.getValues(); 
    var csvFile = undefined; 

    // loop through the data in the range and build a string with the csv data 
    if (data.length > 1) { 
     var csv = ""; 
     for (var row = 0; row < data.length; row++) { 
     for (var col = 0; col < data[row].length; col++) { 
      //Handle special characters 
      var text = data[row][col].toString(); 

      text = text.replace(/(\r\n|\n|\r)/g," "); 
      for(var i = 0; i < text.length; i++) 
      { 
       if(text[i] == "\'" || text[i] == "\"" || text[i] == "\\" || text[i] == "\n" || text[i] == "\r" || text[i] == "\t" || text[i] == "\b" || text[i] == "\f") 
       { 
       text = spliceSlice(text,i,0,"\\"); 
       i++; 
       } 
      } 
      if (data[row][col].toString().indexOf(",") != -1) { 
      data[row][col] = "\"" + text + "\""; //Puts quotes around the data for strings. 
      } 
     } 

     // join each row's columns 
     // add a carriage return to end of each row, except for the last one 
     if (row < data.length-1) { 
      csv += data[row].join(",") + "\r\n"; 
     } 
     else { 
      csv += data[row]; 
     } 
     } 

    } 
    csvFile = csv; 

    return csvFile; 
    } 
    catch(err) { 
    Logger.log(err); 
    } 
} 

正如你可以看到我試圖以應對新的線,我看過關於「正則表達式」然而,他們似乎並不實際做任何事爲了我。所以也許我只是用錯了,然後它會起作用,或者我需要以不同的方式去做。

編輯:我看過記事本+ +中的文件,並確定它們是導致在行中間問題的LF字符。在行\ r \ n結束的地方工作的很好。

回答

0

而不是.replace(/(\r\n|\n|\r)/g," ")嘗試.replace("\n", " ").replace("\r", " "),我知道它本質上是一樣的,但我目前使用這個解決方案沒有打嗝。

+0

我試圖用這個,而我仍然有同樣的問題。 – 2015-03-20 05:49:36

+0

經過這一番修改後,它結束了工作。說實話,我不知道你的開關是否是造成它的原因,但我沒有做任何明顯的改變。 – 2015-04-07 17:19:51