我需要从App脚本将csv文件导入到指定的Google表格中。我开发了一个可以完美工作的代码,但是没有显示任何输出。我要做的是创建一个数组,以插入一个csv文件列表,另一个数组,以在工作电子表格中插入工作表名称。然后我创建了一个if循环,如果数组的索引等于包含工作表的数组的索引,则包含数组的csv文件将推送数据。我将其放在整个for循环中进行迭代。下面是我的代码。
function importCSVFromGoogleDrive() {
var ss = SpreadsheetApp.getActiveSpreadsheet();// get the active spreadsheet
["Sheet1", "Sheet2", "Sheet3"].forEach(function (s) {
var sheetArray = ss.getSheetByName(s); // getSheetByName
var numSheets = sheetArray.length; // save sheets in Array
for (j = 0; j < numSheets; j++) { //loop to iterate
var fileArray = DriveApp.getFilesByName["Acsv","Bcsv"]; //get csv files as a list
var file = fileArray.length; // add the list into an array
var csvData = Utilities.parseCsv(file.getBlob().getDataAsString()); // parse csv data
if(numSheets==csvData){ // if array Index No of numSheets equals to index of file array
numSheets.push(csvData);// push csv data into the sheet
numSheets.clearContents(); //clear current contents in the sheet
numSheets.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData); // set values to the sheet
}
}
})
}
该代码不会显示任何错误,但不会显示任何从csv文件输入到工作表的数据。谁能解释为什么会这样吗?
答案 0 :(得分:3)
此行使用了错误的getFilesByName
语法:
var fileArray = DriveApp.getFilesByName["Acsv","Bcsv"]; //get csv files as a list
正确的语法是:
DriveApp.getFilesByName(name);
其中name是一个字符串。您应该相应地更改代码。
另一方面
var numSheets = sheetArray.length; // save sheets in Array
和
var file = fileArray.length; // add the list into an array
分别为numSheets
和file
分配一个整数,因此接下来的代码行将无法满足您的期望,例如
numSheets.push(csvData);// push csv data into the sheet
和
var csvData = Utilities.parseCsv(file.getBlob().getDataAsString()); // parse csv data
请考虑抽出一些时间来学习Google Apps脚本调试器的工作原理,以便您可以使用它高效地调试代码。
参考