Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将没有标题的CSV文件中的数据附加到Google工作表中_Javascript_Arrays_Google Apps Script_Javascript Objects_Csv Import - Fatal编程技术网

Javascript 如何将没有标题的CSV文件中的数据附加到Google工作表中

Javascript 如何将没有标题的CSV文件中的数据附加到Google工作表中,javascript,arrays,google-apps-script,javascript-objects,csv-import,Javascript,Arrays,Google Apps Script,Javascript Objects,Csv Import,我已经设法检索数据并将其附加到我的工作表中,但我还没有弄清楚如何排除标题行 函数importFromCSV(){ var fileName=Browser.inputBox(“Ingree archivo en Drive a importar(ej.datosbbaby.csv):”; var searchTerm=“title=”+fileName+”; //搜索我们的文件 var files=DriveApp.searchFiles(searchTerm) var csvFile=“”;

我已经设法检索数据并将其附加到我的工作表中,但我还没有弄清楚如何排除标题行

函数importFromCSV(){
var fileName=Browser.inputBox(“Ingree archivo en Drive a importar(ej.datosbbaby.csv):”;
var searchTerm=“title=”+fileName+”;
//搜索我们的文件
var files=DriveApp.searchFiles(searchTerm)
var csvFile=“”;
//循环浏览结果
while(files.hasNext()){
var file=files.next();
//假设我们找到的第一个文件就是我们想要的
if(file.getName()==文件名){
//以字符串形式获取文件
csvFile=file.getBlob().getDataAsString();
打破
}
}
//parseCsv返回[][]数组并写入工作表
var csvData=Utilities.parseCsv(csvFile);
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getActiveSheet();
//将数据添加到工作表中
sheet.getRange(sheet.getLastRow()+1,1,csvData.length,csvData.length).setValues(csvData);

//sheet.getRange(1,1,csvData.length,csvData[1].length).setValues(csvData);因此我知道您正在导入多个csv,其中每个csv的标题都是重复的

为了消除它,有很多操作,我自己更喜欢将实际数据的头分开。您可以通过在数组中调用来实现这一点,这将删除并返回数组的第一个值

解析csv后调用
shift
方法

var csvData=Utilities.parseCsv(csvFile);
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getActiveSheet();
var header=csvData.shift();//现在csvData没有头,您可以
//如果需要,仍然使用'header'变量
//将数据添加到工作表中
sheet.getRange(sheet.getLastRow()+1,1,csvData.length,csvData[0].length)
.设定值(csvData);

我还更改了选择列的方式,除非您的数据是由N个元素组成的N个方形数组,否则您将遇到问题。因此,最好将列设置为
csvData[0]。长度

,因此我知道您正在导入多个csv,其中每个csv的标题都是重复的

为了消除它,有很多操作,我自己更喜欢将实际数据的头分开。您可以通过在数组中调用来实现这一点,这将删除并返回数组的第一个值

解析csv后调用
shift
方法

var csvData=Utilities.parseCsv(csvFile);
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getActiveSheet();
var header=csvData.shift();//现在csvData没有头,您可以
//如果需要,仍然使用'header'变量
//将数据添加到工作表中
sheet.getRange(sheet.getLastRow()+1,1,csvData.length,csvData[0].length)
.设定值(csvData);

我还更改了选择列的方式,除非您的数据是由N个元素组成的N个正方形数组,否则您将遇到问题。因此,最好将列设置为
csvData[0].length

拼接方法是正确的,但在上面的解决方案中,它返回标头的值,而不删除标头。删除标头所需的是使用拼接功能,并告诉它从第二行开始,一直到最后。如下所示:

var csvDataNoHeader=csvData.splice(1,csvData.length-1)

这告诉函数从数组的第二个元素开始,然后选择后面的所有元素,减号1表示删除标头。

拼接方法是正确的,但在上面的解决方案中,它返回标头的值,而不删除标头。删除标头所需的是使用拼接函数然后告诉它从第二行开始,一直走到最后。如下所示:

var csvDataNoHeader=csvData.splice(1,csvData.length-1)

这告诉函数从数组的第二个元素开始,然后选择后面的所有元素,减1表示删除标头。

您的问题归结为:“我有一个数组
csvData
,如何删除第一个元素?”我相信如果你这样看,你会找到现有的解决方案。这能回答你的问题吗?你的问题可以归结为:“我有一个数组
csvData
,如何删除第一个元素?”我相信如果你这样看,你会找到现有的解决方案。这回答了你的问题吗?非常感谢。我仍然不明白创建“var header=csvData.shift()”是如何从正在解析到活动工作表中的数据中删除标头的。变量标头没有在“sheet.getRange”中进行尺寸标注(sheet.getLastRow()+1,1,csvData.length,csvData[0].length).设置值(csvData)“;”。但效果很好!!!还有一个问题:如果头是5行而不仅仅是第一行,我将如何移位?在数组上调用的
shift
方法将删除并返回其第一个元素,因此调用后不再有头。如果要对最后一行执行相同操作,则存在该方法。现在,如果要在rbitrary index您可以使用想象第5行
csvData.splice(4,1)
意思是:删除索引
4
处的
1
元素(第5位,因为数组的索引为零)。您非常有帮助。“csvData.splice()”除了“csvData.splice(4,1)”之外效果很好,而是“csvData.splice(0,5)”“。我仍然不知道在哪里调用了'var header'。变量header没有在'sheet.getRange(sheet.getLastRow()+1,1,csvData.length,csvData[0].length.).setValues(csvData);'中进行尺寸标注。很高兴这有帮助,但要考虑到
csvData.splice(0,5)
实际上会删除前5行,所以请看一看,以防因为丢失了一些数据而无法正常工作