我有一个脚本可以将数据从csv文件导入到Google表格中。我想包含以下内容以从数据中删除引号 - .replace(/" / g,"") - 但我不确定要添加的最佳位置/语法到现有的脚本。
我是否将其添加到我将csv数据转换为数组的部分 -
function CSVToArray_(strData){
var rows = strData.split("\n");
//Logger.log(rows.length);
var array = [];
for(n=0;n<rows.length;++n){
if(rows[n].split(',').length>1){
array.push(rows[n].split(','));
}
}
Logger.log(array);
return array;
}
...或者使用数组数据更新工作表的部分?
var impSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("CtrlSht").getRange("B8:B8").getValue();
var csvData = CSVToArray_(csvFile);// convert to 2D array
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(impSheet);
sheet.clear();
sheet.getRange(1,1, csvData.length, csvData[0].length).setValues(csvData);// write to sheet in one single step
非常感谢任何指导/建议。
答案 0 :(得分:2)
上面的代码是危险的,如果元素中有逗号,即使它在引号中是有效的csv,也会中断。我建议您查看此库https://code.google.com/p/jquery-csv/。此外,您要删除引号还是要将字符串值转换为数字?也就是说,您收到"2"
并希望它只是2
,如果是这样,您可能只是想将其解析为数字,如下所示:parseInt("2")
。
如果您不关心上述内容,则以下内容应该有效:
function CSVToArray_(strData){
var rows = strData.split("\n");
//Logger.log(rows.length);
var array = [];
var array_inner;
// iterate over rows
for (n=0; n<rows.length; ++n) {
array_inner = rows[n].split(',');
if (array_inner.length>1) {
// iterate over columns
for (m=0; m<array_inner.length; m++) {
array_inner[m] = array_inner[m].replace(/"/g, "");
}
array.push(array_inner);
}
}
Logger.log(array);
return array
}