Google Script - Получить имя файла из URL - PullRequest
1 голос
/ 06 марта 2020

У меня есть несколько 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);
}

PLease assist.

Вот пример URL, который загружает CSV.

https://www.punters.com.au/form-guide/spreadsheet-987656

1 Ответ

1 голос
/ 06 марта 2020

В вашем случае вы можете напрямую получить имя файла из «Content-Disposition» заголовков ответа UrlFetchApp.fetch(csvUrl). Значение равно '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.

Ссылка:

Если я неправильно понял ваш вопрос, и это не то направление, которое вы хотите, я приношу свои извинения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...