我正在编写一个Google Apps脚本,该脚本将许多报告合并为合并的制表符分隔(TSV)格式。但是,我注意到,每当我写入文件时,字符串中的选项卡都会转换为空格。还有其他我应该使用的字符串文字吗?

    var content =
        data.parameters.time[0] + "\t" +
        data.parameters.url[0] + "\t" +
        data.parameters.code_name[0] + "\t" +
        data.parameters.app_name[0] + "\t" +
        data.parameters.version[0] + "\t" +
        data.parameters.cookies[0] + "\t" +
        data.parameters.lang[0] + "\t" +
        data.parameters.platform[0] + "\t" +
        data.parameters.user_agent[0] + "\t" +
        data.parameters.ex[0];
    fld.createFile(makeid() + ".tab", content, ContentService.MimeType.CSV);

最佳答案

使用\t字符串文字没什么错-而是您使用了来自ContentService的错误的MimeType枚举。 DriveApp方法需要MimeType as a string。尝试:



fld.createFile(makeid() + ".tab", content, MimeType.CSV);


下面的代码片段显示了正确设置MimeType后,制表符在文件写入后仍然存在的情况:

function myFunction() {
  var content =
        'time' + "\t" +
        'url' + "\t" +
        'code_name' + "\t" +
        'etcetera';
  Logger.log("Initial TSV: " + JSON.stringify(content.split("\t")));

  var newFile = DriveApp.createFile("Delete-me" + ".tab", content, MimeType.CSV);

  // Check our result, by reading back the file
  var blob = newFile.getBlob();
  var docContent = blob.getDataAsString()
  Logger.log("Result TSV: " + JSON.stringify(docContent.split("\t")));
}


日志:

[15-04-07 14:53:08:767 EDT] Initial TSV: ["time","url","code_name","etcetera"]
[15-04-07 14:53:09:542 EDT] Result TSV: ["time","url","code_name","etcetera"]

09-18 09:49