App脚本调试成功,但执行失败。为什么?

时间:2019-07-18 15:52:13

标签: javascript arrays google-apps-script google-drive-api google-apps-script-editor

我需要从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文件输入到工作表的数据。谁能解释为什么会这样吗?

1 个答案:

答案 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

分别为numSheetsfile分配一个整数,因此接下来的代码行将无法满足您的期望,例如

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

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

请考虑抽出一些时间来学习Google Apps脚本调试器的工作原理,以便您可以使用它高效地调试代码。

参考