【发布时间】:2019-07-18 15:52:13
【问题描述】:
我需要将 csv 文件从 App 脚本导入指定的谷歌表格。我开发了一个完美运行的代码,但它没有显示任何输出。我所做的是我创建了一个数组来插入一个 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 文件输入到工作表。谁能解释一下为什么会这样?
【问题讨论】:
-
您好,首先在您的 forEach 函数中,您在每个循环中覆盖分配给 sheetArray 的值,而不是将其附加到现有数组(例如使用 Array.push(s))。就像现在一样,您只是得到最后一个,即 Sheet3。而且...为什么要使用方括号调用函数? DriveApp.getFilesByName() - 带圆括号 - 获取一组文件,给出一个文件名。同样, Array.length 返回数组中元素的数量。我建议您阅读有关 JS 的内容,developers.google.com 上的文档,并考虑使用 Logger.log() 来调试您的变量。
标签: javascript arrays google-apps-script google-drive-api google-apps-script-editor