使用DriveApp.createFile更改google脚本中的输出文件编码?

时间:2017-12-13 09:25:09

标签: encoding google-apps-script google-sheets google-spreadsheet-api utf-16

让我们解释一下我的请求背景:我试图在.txt列表文件中输出谷歌电子表格的内容,以UTF-16编码,因为我在这个.txt文件的后续任务中需要这个charset。

实际上,我在右侧文件夹中输出了正确的输出,并且名称是我想要的...但是字符集是UTF-8(我已经用基本文本编辑器检查)。

问题是我无法通过google脚本找到有关charset操作的任何文档。我现在唯一的解决方案是在sublim文本中进行基本的手动charset操作......

这是我的代码(翻译自法语)。

感谢您的回复!

马克西姆

    function export() {
  //sheet manipulation part
  //Get the sheet and set data range i need
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getDataRange();
  var values = sheet.getRange(2, 1, sheet.getLastRow()-1, sheet.getLastColumn()).getValues();
  var text = values.map(function (a) {return a.join('\t');}).join('\n');

  //Path setting and export part
  // Get sheet info, define path and create file
  var id = SpreadsheetApp.getActiveSpreadsheet().getId();
  var idString = id.toString();
  var thisFile = DriveApp.getFileById(idString);
  var parentFold = thisFile.getParents();
  var folder = parentFold.next();
  var theId = folder.getId();
  var targetFolder = DriveApp.getFolderById(theId);
  targetFolder.createFile('liste du ' + new Date() + '.txt', text, MimeType.PLAIN_TEXT);
}

2 个答案:

答案 0 :(得分:0)

这已经在SO post

中得到了解答
Utilities.newBlob("").setDataFromString("foo", "UTF-8").getDataAsString("UTF-16")

答案 1 :(得分:0)

这对我有帮助:

var string = 'your text here';
var blob = Utilities.newBlob('').setDataFromString(string, "UTF-16");
blob.setName('your_file_name.txt');
var file = DriveApp.createFile(blob);

结果createFile方法将使用UTF-16。