【问题标题】:google app script export csv with semicolon instead of comma谷歌应用脚​​本导出 csv 用分号而不是逗号
【发布时间】:2020-03-20 21:09:08
【问题描述】:

我正在使用下面的代码将谷歌电子表格导出到特定文件夹中的 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));
}

感谢您的帮助

【问题讨论】:

    标签: google-apps-script automatic-semicolon-insertion


    【解决方案1】:
    • 您希望将检索到的 CSV 数据的 , 替换为 ;
    • 您希望将替换的数据创建为文件。

    如果我的理解是正确的,那么这个答案呢?请认为这只是几个可能的答案之一。

    修改点:

    • ; 用作分隔符而不是, 的数据不是text/csv 的mimeType。在这种情况下,它必须是text/plain
    • 在您的脚本中,我想提出以下 2 种模式。

    模式一:

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

    修改脚本:

    当你的脚本被修改时,请进行如下修改。

    从:
    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。

    参考:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-23
      • 1970-01-01
      • 1970-01-01
      • 2022-08-17
      • 2013-01-24
      • 2016-07-01
      • 1970-01-01
      相关资源
      最近更新 更多