【问题标题】:GAS replace comma with tabGAS 用制表符替换逗号
【发布时间】:2017-10-29 23:53:09
【问题描述】:

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

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. 同样,我需要在每行末尾添加一个换行符。目前它把所有东西放在一起排成一排。

有人知道这两件事怎么做吗?非常感谢任何帮助!

Here is a sample spreadsheet.

【问题讨论】:

  • 您是否认为列分隔符是制表符而不是逗号?
  • 是的,这正是我想要的。

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


【解决方案1】:

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

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

代码将类似于以下片段:

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 系统的行尾,\r\n 是Windows 系统的行尾。同一问答线程上的另一个答案是https://blog.codinghorror.com/the-great-newline-schism/

相关:

【讨论】:

  • 谢谢。这成功地将列分隔为选项卡。你知道如何将每一行分开吗?它可能类似于 /n。
  • 好的,我希望我在最初的问题中进一步澄清了#2。我不知道如何进一步描述这个问题。
  • 由于某种原因,换行符太迟了两个位置。在导出的文件中,第 2 行从 C 列开始。因此,这两行在导出的文件中不会对齐。
  • 我明白了!就是 var text = values.join('\r\n');
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-29
相关资源
最近更新 更多