应用程序脚本调试成功但执行 failed.Why?
App Script debug success but execution failed.Why?
我需要从 App 脚本将 csv 文件导入指定的 google sheet。我开发了一个完美运行的代码,但它没有显示任何输出。我所做的是我创建了一个数组来插入 csv 文件列表和另一个数组来在活动传播 sheet 中插入 sheet 名称。然后我创建了一个 if 循环,如果该数组的索引等于包含 sheet 的数组的索引,则包含数组的 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 文件输入到 sheet 的数据。谁能解释一下为什么会这样?
这一行使用了错误的语法 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
分别为 numSheets
和 file
分配一个整数,因此接下来的代码行不会执行您期望的操作,例如
numSheets.push(csvData);// push csv data into the sheet
和
var csvData = Utilities.parseCsv(file.getBlob().getDataAsString()); // parse csv data
考虑抽出一些时间来了解 Google Apps 脚本调试器的工作原理,以便您可以使用它来高效地调试代码。
参考
我需要从 App 脚本将 csv 文件导入指定的 google sheet。我开发了一个完美运行的代码,但它没有显示任何输出。我所做的是我创建了一个数组来插入 csv 文件列表和另一个数组来在活动传播 sheet 中插入 sheet 名称。然后我创建了一个 if 循环,如果该数组的索引等于包含 sheet 的数组的索引,则包含数组的 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 文件输入到 sheet 的数据。谁能解释一下为什么会这样?
这一行使用了错误的语法 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
分别为 numSheets
和 file
分配一个整数,因此接下来的代码行不会执行您期望的操作,例如
numSheets.push(csvData);// push csv data into the sheet
和
var csvData = Utilities.parseCsv(file.getBlob().getDataAsString()); // parse csv data
考虑抽出一些时间来了解 Google Apps 脚本调试器的工作原理,以便您可以使用它来高效地调试代码。
参考