GAS用tab替换逗号

时间:2017-10-29 23:53:09

标签: google-apps-script google-sheets google-drive-api

我正在尝试编写一个简单的应用程序来从一行或几行中获取内容并输出文本文件。我有2个问题(见下面的代码段):

function saveAsTSV3() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = SpreadsheetApp.getActiveSheet();
  var range = s.getRange("A53:HY54");
  var values = range.getValues();
  var text = values.join('\r\n');
  regex = new RegExp(',','g');
  text = text.replace(regex,'\t');
  DriveApp.createFile("A file.tsv", text, MimeType.PLAIN_TEXT);
}

它会创建文件并将其放在正确的文件夹中。

  1. 但是,它用逗号填充而不是制表符 2.同样,我需要在每行的末尾添加换行符。现在它把所有东西放在一起排成一排。
  2. 任何人都知道如何做这两件事吗?非常感谢任何帮助!

    Here is a sample spreadsheet.

1 个答案:

答案 0 :(得分:0)

getValues返回一个JavaScript数组。获得所需结果的一种方法是

  • 使用\n\r\n作为行分隔符来加入唯一行的值。
  • 使用replace修饰符替换使用g上一步插入的逗号。
  • 使用MimeType.PLAIN_TEXT而不是MimeType.CSV创建文件,因为最后一个用于逗号分隔值文件。

代码类似于以下snipeet:

function saveAsTSV() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = SpreadsheetApp.getActiveSheet();
  var range = s.getRange("A1:C6");
  var values = range.getValues();
  var end_of_line = '\n';
  var text = values.join(end_of_line);
  regex = new RegExp(',','g');
  text = text.replace(regex,'\t');
  DriveApp.createFile("A file.tsv", text, MimeType.PLAIN_TEXT);
}

注意:根据answer \n是UNIX系统的行尾,Windows系统的\r\n。关于同一Q& A线程的另一个答案是https://blog.codinghorror.com/the-great-newline-schism/

相关: