Проблемный скрипт для экспорта электронной таблицы в CSV - PullRequest
1 голос
/ 31 января 2020

У меня проблема со скриптом для экспорта листов в CSV:

Мне бы хотелось, чтобы моя папка создавалась в родительской папке Sheets на диске Google, а не в root моего Google. диск.

Я также не могу изменить скрипт для перезаписи старых версий папки вместо создания новых.

Можете ли вы помочь мне

С уважением

function onOpen() { 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var csvMenuEntries = [{name: "export as csv files", functionName: "saveAsCSV"}]; 
ss.addMenu("csv", csvMenuEntries); 
}


function saveAsCSV() {
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheets = ss.getSheets(); 
// create a folder from the name of the spreadsheet 
var folder = DriveApp.createFolder(ss.getName().toLowerCase().replace(/ /g,'_') + '_csv'); 
for (var i = 0 ; i < sheets.length ; i++) { 
var sheet = sheets[i]; 
// append ".csv" extension to the sheet name 
fileName = sheet.getName() + ".csv"; 
// convert all available sheet data to csv format 
var csvFile = convertRangeToCsvFile_(fileName, sheet); 
// create a file in the Docs List with the given name and the csv data 
folder.createFile(fileName, csvFile); 
} 
Browser.msgBox('Le fichier a été nommé ' + folder.getName()); 
} 


function convertRangeToCsvFile_(csvFileName, sheet) { 
 // get available data range in the spreadsheet 
var activeRange = sheet.getDataRange(); 
try { 
var data = activeRange.getValues(); 
var csvFile = undefined; 


// loop through the data in the range and build a string with the csv data 
if (data.length > 1) { 
var csv = ""; 
for (var row = 0; row < data.length; row++) { 
for (var col = 0; col < data[row].length; col++) { 
if (data[row][col].toString().indexOf(",") != -1) { 
data[row][col] = "\"" + data[row][col] + "\""; 
} 
} 


 // join each row's columns 
 // add a carriage return to end of each row, except for the last one 
      if (row < data.length-1) { 
           csv += data[row].join(",") + "\r\n"; 
        } 
        else { 
          csv += data[row]; 
        } 
      } 
       csvFile = csv; 
    } 
    return csvFile; 
  } 
  catch(err) { 
    Logger.log(err); 
    Browser.msgBox(err); 
  } 
};

1 Ответ

0 голосов
/ 03 февраля 2020

Большое спасибо, вот именно это! это работает отлично! Спасибо.

У меня будет последняя жалоба в скрипте импорта данных, я захочу импортировать файл CSV в лист "Резервное копирование", но я хочу сохранить предыдущие данные типа "добавить в Активный лист "

Мой скрипт

function Backup() {
   var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A4').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Backup'), true);
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()).activate();
  spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
  spreadsheet.getRange('A1').activate();
  var file = DriveApp.getFilesByName("Report.csv").next();
  var csvData = Utilities.parseCsv(file.getBlob().getDataAsString(), ",");
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...