Google App скрипт экспорта CSV с точкой с запятой вместо запятой - PullRequest
0 голосов
/ 21 марта 2020

Я использую приведенный ниже код для экспорта электронной таблицы Google в CSV в указанной папке c. Мне нужно использовать точку с запятой (;) вместо запятой (,)

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 Ответ

3 голосов
/ 21 марта 2020
  • Вы хотите заменить , на ; для полученных данных CSV.
  • Вы хотите создать замененные данные в виде файла.

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

Точки модификации:

  • Данные, которые ; используются в качестве разделителя вместо ,, не являются mimeType text/csv. В этом случае оно должно быть text/plain.
  • . В вашем сценарии я хотел бы предложить следующие 2 шаблона.

Шаблон 1:

В этом шаблоне извлекаются значения и создаются данные, разделенные ;.

Модифицированный скрипт:

Когда ваш скрипт модифицируется, измените его следующим образом.

From:
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.

Ссылка:

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

...