我尝试将多个csv文件导入一张表。 每个csv文件(Fil)只包含一个这样的数字:1234,00。 没什么。
应将数字导入多个不同的列(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 :(得分: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();
}
}