Скрипт приложения Google экспортирует CSV с точкой с запятой вместо запятой
Я использую приведенный ниже код для экспорта электронной таблицы 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));
}
Спасибо за помощь
1 ответ
Решение
- Вы хотите заменить
,
к;
для полученных данных CSV. - Вы хотите создать замененные данные в виде файла.
Если я правильно понимаю, как насчет этого ответа? Воспринимайте это как один из нескольких возможных ответов.
Пункты модификации:
- Данные, которые
;
используется в качестве разделителя вместо,
не является mimeTypetext/csv
. В этом случае требуетсяtext/plain
. - В вашем сценарии я хотел бы предложить следующие 2 шаблона.
Схема 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.
Ссылка:
Если я неправильно понял ваш вопрос и это было не то направление, которое вам нужно, я прошу прощения.