google 应用脚本用分号而不是逗号导出 csv

google app script export csv with semicolon instead of comma

我正在使用下面的代码将 google 电子表格导出到特定文件夹中的 CSV 文件。 我需要一个分号 (;) 作为分隔符而不是逗号 (,)

function saveAsCSV() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ssname = ss.getName();
var sheet = ss.getActiveSheet();
var parentFolder = DriveApp.getFolderById("MyID");
var folder = parentFolder;
var curDate = Utilities.formatDate(new Date(), "GMT+1", "yyyyMMdd")

var fileName = "MyName" + curDate + ".csv";
var url = "https://docs.google.com/spreadsheets/d/" + ss.getId() + "/export? 
exportFormat=csv&format=csv";  
var token = ScriptApp.getOAuthToken();  
var response = UrlFetchApp.fetch(url + sheet.getSheetId(), {
headers: {
  'Authorization': 'Bearer ' +  token
}
});
folder.createFile(response.getBlob().setName(fileName));
}

感谢您的帮助

  • 您想将检索到的 CSV 数据的 , 替换为 ;
  • 您想将替换数据创建为文件。

如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。

修改点:

  • ;代替,作为分隔符的数据不是text/csv的mimeType。在本例中,要求为text/plain.
  • 在你的脚本中,我想提出以下两种模式。

模式 1:

在此模式中,检索值并创建由 ; 分隔的数据。

修改后的脚本:

当您的脚本修改时请修改如下。

从:
var url = "https://docs.google.com/spreadsheets/d/" + ss.getId() + "/export? 
exportFormat=csv&format=csv";  
var token = ScriptApp.getOAuthToken();  
var response = UrlFetchApp.fetch(url + sheet.getSheetId(), {
headers: {
  'Authorization': 'Bearer ' +  token
}
});
folder.createFile(response.getBlob().setName(fileName));
到:
var values = sheet.getDataRange().getValues();
var outputData = values.map(r => r.join(";")).join("\n");
folder.createFile(fileName, outputData, MimeType.PLAIN_TEXT);

模式 2:

在此模式中,检索到的 CSV 数据被转换。

修改后的脚本:

当您的脚本修改时请修改如下。

从:
folder.createFile(response.getBlob().setName(fileName));
到:
var csvData = Utilities.parseCsv(response.getBlob().getDataAsString());
var outputData = csvData.map(r => r.join(";")).join("\n");
folder.createFile(fileName, outputData, MimeType.PLAIN_TEXT);

注:

  • 请启用V8。

参考:

如果我误解了您的问题并且这不是您想要的方向,我深表歉意。