Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过处理换行符的google脚本保存为CSV_Javascript_Csv_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 通过处理换行符的google脚本保存为CSV

Javascript 通过处理换行符的google脚本保存为CSV,javascript,csv,google-apps-script,google-sheets,Javascript,Csv,Google Apps Script,Google Sheets,因此,我试图从谷歌电子表格中获取一张表格,并将其保存为.CSV文件,就像您可以手动执行的那样。它工作得相当好,但是我遇到了一个新的行/行馈送/回车等问题。到目前为止,我已经使用和修改了一些堆栈溢出资源,这些资源已经满足了我的需要,但是我仍然停留在这个新行问题上 问题是: 原因是: 我会注意到,如果我手动保存谷歌电子表格中的CSV文件,它看起来很好,但是你在原因图片中看到的那个框是我无法解决的问题 我当前的代码: function convertRangeToCsvFile_(csvFileN

因此,我试图从谷歌电子表格中获取一张表格,并将其保存为.CSV文件,就像您可以手动执行的那样。它工作得相当好,但是我遇到了一个新的行/行馈送/回车等问题。到目前为止,我已经使用和修改了一些堆栈溢出资源,这些资源已经满足了我的需要,但是我仍然停留在这个新行问题上

问题是:

原因是:

我会注意到,如果我手动保存谷歌电子表格中的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);
  }
}
函数convertRangeToCsvFile_932;(csvFileName,工作表){
//获取电子表格中的可用数据范围
var activeRange=sheet.getDataRange();
试一试{
var data=activeRange.getValues();
var csvFile=未定义;
//循环遍历范围中的数据,并使用csv数据构建字符串
如果(data.length>1){
var csv=“”;
对于(变量行=0;行
正如你所看到的,我试图用我所读到的关于“正则表达式”的内容来处理新行,但是,它们似乎并没有为我做任何事情。因此,也许我只是用错了,然后它就会起作用,或者我需要用不同的方式来处理


< >编辑:< /强>我在记事本++中查看了文件,并确定它们是LF字符,导致行中间的问题。在我的末尾\r\n工作得很好。

而不是<代码>。替换((\ \ \n \ n \ r)/g,“”)<代码>尝试<代码>。替换(“\n”,“”)。
,我知道它本质上是一样的,但我目前使用这个解决方案时没有打嗝。

我尝试使用这个解决方案,但仍然存在同样的问题。在对这个问题进行了更多的修补之后,它终于起了作用。老实说,我不知道是不是你的开关导致了它,但我没有做任何明显的不同。