2015-08-03 4 views
0

Я пытаюсь импортировать несколько файлов csv в один лист. Каждый файл csv (Fil) содержит только одно число: 1234,00. Ничего больше.Импорт нескольких файлов csv в один лист

Номера должны быть импортированы в несколько разных столбцов (columnFil). Каждая партия файлов csv должна быть импортирована в одну строку.

Проблема в том, что я не могу получить несколько файлов csv в одной строке. Итак, я попытался использовать get- и setValue, но почему-то Google Script несовместим при выполнении этой части?

function Daily() { 

    var Fil = [121,122,123]; 
    var columnFil = ["C","D","E"]; 

    for (var count = 0; count < 3; count++){ 
    Logger.log(count); 


var tab = "2015"; 
    var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(tab); 
    var fSource = DriveApp.getFolderById('123467890'); 
    var fi = fSource.getFilesByName(Fil[count]+".csv"); 
    var ss = SpreadsheetApp.openById('0987654321'); 


    if (fi.hasNext()) { 
    var file = fi.next(); 
    var csv = file.getBlob().getDataAsString(); 
    var csvData = CSVToArray(csv); // see below for CSVToArray function 

    // loop through csv data array and insert (append) as rows into 'NEWDATA' sheet 
    for (var i=0, lenCsv=csvData.length; i<lenCsv; i++) { 

     var rangeToBeMoved = sh.getRange(i+1, 1, 1, csvData[i].length); 
     var values = rangeToBeMoved.csvData; 
     sh.appendRow(csvData[i]); 
} 
    } 

var Avals = sh.getRange(tab+"!A1:A").getValues(); 
var Alast = Avals.filter(String).length; // get last cell 
    var month = "=Month(A"+Alast+")"; 
Logger.log(Alast); 
    var csvData = sh.getRange(tab+"!A"+Alast).getValue(); 

sh.getRange(tab+"!"+columnFil[count]+Alast).setValue(csvData); 
    var clear = sh.getRange(tab+"!A"+Alast); 
     clear.clearContent(); 
    } 
    sh.getRange(tab+"!A"+Alast).setValue(datum); 
    sh.getRange(tab+"!B"+Alast).setValue(month); 
} 

Отметим, что CSVToArray (CSV) является известной функцией от: http://www.bennadel.com/blog/1504-Ask-Ben-Parsing-CSV-Strings-With-Javascript-Exec-Regular-Expression-Command.htm

ответ

0

я, возможно, решение этой проблемы. Каждый импорт CSV добавляется в новую строку. Итак, после завершения импорта я запускаю еще одну функцию (moveData), которая перемещает данные в определенные столбцы. Если есть лучшее/более легкое решение, пожалуйста, дайте мне знать!

function moveData() { 
var tab = "2015"; 
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(tab); 

var Fil = [121,122,123]; 
var columnFil = ["C","D","E"]; 
var counting = [2,1,0]; 

for (var count = 0; count < 3; count++){ 

var Avals = sh.getRange(tab+"!A1:A").getValues(); 
var Alast = Avals.filter(String).length; // get last cell 

Logger.log("Last row:" + Alast); 

var csvData = sh.getRange(tab+"!A"+Alast).getValue(); 

var Alast = Alast - counting[count]; 

Logger.log("New row is:" + Alast); 


sh.getRange(tab+"!"+columnFil[count]+Alast).setValue(csvData); 

var Alast = Alast + counting[count]; 

Logger.log("Cleanup old row: " + Alast); 

var clear = sh.getRange(tab+"!A"+Alast); 
clear.clearContent(); 

    } 
} 
Смежные вопросы