我有一些URL,用于重定向和下载csv文件。我想获取文件的文件名。反正有可能吗。
这是我当前使用的代码:
function importCSVFromWeb(csvUrl,rownum,sheet) {
var csvContent = UrlFetchApp.fetch(csvUrl).getContentText();
var csvData = Utilities.parseCsv(csvContent);
var csvFileName =UrlFetchApp.fetch(csvUrl).getBlob().getName();
//Logger.log(csvFileName);
sheet.getRange(rownum, 1, csvData.length, csvData[0].length).setValues(csvData);
sheet.getRange(rownum, csvData[0].length, 1, 1).setValue(csvFileName);
sheet.getRange(rownum, csvData[0].length, 1, 1).copyTo(sheet.getRange(rownum+1, csvData[0].length,csvData.length,1));
sheet.deleteRow(rownum);
}
请协助。
这是下载csv的示例URL。
答案 0 :(得分:1)
根据您的情况,您可以直接从UrlFetchApp.fetch(csvUrl)
响应头的“ Content-Disposition”中检索文件名。值为'Content-Disposition': 'attachment; filename="20200213-bunbury-r02.csv"',
。
那么下面的修改如何?请认为这只是几个可能的答案之一。
修改脚本后,请进行以下修改。
从:var csvContent = UrlFetchApp.fetch(csvUrl).getContentText();
var csvData = Utilities.parseCsv(csvContent);
var csvFileName =UrlFetchApp.fetch(csvUrl).getBlob().getName();
至:
var res = UrlFetchApp.fetch(csvUrl);
var csvContent = res.getContentText();
var csvData = Utilities.parseCsv(csvContent);
var csvFileName = res.getHeaders()["Content-Disposition"].match(/filename="(\w.+)"/)[1];
var csvFileName = res.getHeaders()["Content-Disposition"].split("=")[1].replace(/"/g, "");
。在https://www.punters.com.au/form-guide/spreadsheet-987656
的情况下,csvFileName
是20200213-bunbury-r02.csv
。
如果我误解了您的问题,而这不是您想要的方向,我深表歉意。