Скрипт приложения 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.
  • Вы хотите создать замененные данные в виде файла.

Если я правильно понимаю, как насчет этого ответа? Воспринимайте это как один из нескольких возможных ответов.

Пункты модификации:

  • Данные, которые ; используется в качестве разделителя вместо , не является mimeType text/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.

Ссылка:

Если я неправильно понял ваш вопрос и это было не то направление, которое вам нужно, я прошу прощения.

Другие вопросы по тегам