应用脚本调试成功,但执行失败.为什么



我需要从应用程序脚本将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文件到工作表的任何数据输入。谁能解释一下为什么会这样?

这一行使用了错误的语法 getFilesByName

var fileArray = DriveApp.getFilesByName["Acsv","Bcsv"]; //get csv files as a list 

正确的语法是:

DriveApp.getFilesByName(name);

其中名称是字符串。您应该相应地更改代码。

另一方面

var numSheets = sheetArray.length; // save sheets in Array 

var file = fileArray.length; // add the list into an array

分别为 numSheetsfile 分配一个整数,因此接下来的代码行不会执行您期望的操作,例如

numSheets.push(csvData);// push csv data into the sheet

var csvData = Utilities.parseCsv(file.getBlob().getDataAsString()); // parse csv data

请考虑花一些时间来了解 Google Apps 脚本调试器的工作原理,以便您可以使用它来有效地调试代码。

参考

  • https://developers.google.com/apps-script/reference/drive/drive-app#getfilesbynamename

相关内容

  • 没有找到相关文章

最新更新