Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaScript/google应用程序脚本在google工作表中映射一行数组_Javascript_Arrays_Google Apps Script_Google Sheets_Mapping - Fatal编程技术网

如何使用JavaScript/google应用程序脚本在google工作表中映射一行数组

如何使用JavaScript/google应用程序脚本在google工作表中映射一行数组,javascript,arrays,google-apps-script,google-sheets,mapping,Javascript,Arrays,Google Apps Script,Google Sheets,Mapping,我有一个代码,可以读取多张表中的两列(D&H)并将它们保存在数组中。我想做的是将此数组中的数据映射到staging sheet中的一行,但我一直运行到一个错误:运行到一个错误参数(number、number、number、null)与SpreadsheetApp.Spreadsheet.getRangeList的方法签名不匹配。I确实,每次读取工作表时,数据都应追加到下一行。我将感谢任何帮助解决这一挑战 function combinesheets() { var folder = DriveA

我有一个代码,可以读取多张表中的两列(D&H)并将它们保存在数组中。我想做的是将此数组中的数据映射到staging sheet中的一行,但我一直运行到一个错误:运行到一个错误参数(number、number、number、null)与SpreadsheetApp.Spreadsheet.getRangeList的方法签名不匹配。I确实,每次读取工作表时,数据都应追加到下一行。我将感谢任何帮助解决这一挑战

function combinesheets() {
var folder = DriveApp.getFolderById( Copy_Folder_id)
var filesIterator = folder.getFiles();

var file;
var fileType;
var ssID;
var combinedData = [];
var data;

while(filesIterator.hasNext()){
 file = filesIterator.next();
 fileType = file.getMimeType();

if(fileType === "application/vnd.google-apps.spreadsheet"){
ssID = file.getId()
data = getDataFromSpreadsheet(ssID);
combinedData = combinedData.concat(data);
} //if ends here

}//while ends here

var ws = SpreadsheetApp.openById(Stage_sheet_id);
var ss = ws.getSheetByName("Project List");
ws.getRangeList(2,1, combinedData.length, combinedData.length [0]).setValues(combinedData) //running into an error on this line- The parameters (number,number,number,null) don't match the method signature for SpreadsheetApp.Spreadsheet.getRangeList.
Logger.log(combinedData)

}

function getDataFromSpreadsheet(ssID){
var ss =  SpreadsheetApp.openById(ssID);
var ws = ss.getSheets()[0]
var data =  ws.getRange("A11:I" + ws.getLastRow()).getValues();// how do I get the columns I want here (D & H)
Logger.log(data)

}

之所以出现此错误,是因为
getDataFromSpreadsheet()
函数未
返回其结果

要获取D列和H列中的值(忽略空行),请尝试以下操作:

const values1 = ws.getRange('D11:D').getValues();
const values2 = ws.getRange('H11:H').getValues();
return values1.map((row, index) => row.concat(values2[index]))
  .filter(row => row.join(''));
combinesheets()
中,使用以下命令存储数据:

ss.getRange(2, 1, combinedData.length, combinedData[0].length)
  .setValues(combinedData);

谢谢你的回复。当我使用您的建议编辑代码时,我现在运行到另一个错误类型error:无法读取未定义答案的属性'length',以便在
getDataFromSpreadsheet()
中正确获取并返回值。我不确定是否理解。如果DriveApp代码与问题无关,为什么会有它?还是我遗漏了问题的一部分?另外,我不确定我是否理解列映射的思想,您能否发布源数据和预期输出的示例?非常感谢。