在 CSV 文件中将","转换为";" 谷歌脚本



使用下面的代码,我的目标是从Google工作表文件中提取CSV格式的工作表。但是,当我想将,转换为;时,会出现以下错误消息:

r.join不是函数

你能帮我解决这个问题吗。

另外,你认为有可能将这个新文件直接下载到电脑桌面上吗?

function sheetToCsv(){
  var ssID = SpreadsheetApp.getActiveSpreadsheet().getId();
  var sheet_Name = "Int_Module";
  var requestData = {"method": "GET", "headers":{"Authorization":"Bearer "+ScriptApp.getOAuthToken()}};
  
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheet_Name)
  var sheetNameId = sheet.getSheetId().toString();
  
  params= ssID+"/export?gid="+sheetNameId +"&format=csv"
  var url = "https://docs.google.com/spreadsheets/d/"+ params
  var result = UrlFetchApp.fetch(url, requestData);  
  var newfile = [result].map(r => r.join(";")).join("n");
  newfile.createFile(fileName, outputData, MimeType.PLAIN_TEXT);
}

我知道有两个问题。。。如何用分号生成CSV文件,以及如何将文件直接下载到您的电脑。

1-要生成csv内容,请尝试

  var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
  var sep = ';'
  const content = sh.getDataRange().getValues().reduce((s, r) => s += r.map(c => c + sep).join("") + 'n', "")

2-要下载,你必须浏览一个html页面。

尝试这两种需要

function downloadMyCSVFile() {
  var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
  var sep = ';'
  const content = sh.getDataRange().getValues().reduce((s, r) => s += r.map(c => c + sep).join("") + 'n', "")
  var html = HtmlService.createHtmlOutput(`
<html><body onload="document.getElementById('dwn-btn').click()">
<textarea id="text-val" rows="10" style="display:none;">${content}</textarea>
<input type="button" id="dwn-btn" value="Download text file" style="display:none;"/>
<script>
window.close = function(){window.setTimeout(function(){google.script.host.close()},100)}
function download(filename, text) {
    var element = document.createElement('a');
    element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
    element.setAttribute('download', filename);
    element.style.display = 'none';
    document.body.appendChild(element);
    element.click();
    document.body.removeChild(element);
}
document.getElementById("dwn-btn").addEventListener("click", function(){
    var text = document.getElementById("text-val").value;
    var filename = "${sh.getName()}.csv";
    download(filename, text);
  close();
}, false);
</script>
</body></html>  
  `)
    .setWidth(250).setHeight(100);
  SpreadsheetApp.getUi().showModalDialog(html, "Downloading ...");
}

相关内容

最新更新