如何使用 JavaScript/Google App 脚本在 google sheet 中连续映射数组
How do I get arrays mapped in a row in google sheet using JavaScript/Google App script
我有一个代码可以读取多个 sheet 中的两列 (D & H) 并将它们保存在数组中。我想做的是将此数组中的数据映射到一个分段 sheet 中的一行,但我保留 运行 一个错误:运行 变成一个错误 参数 (number,number,number,null) 与 SpreadsheetApp.Spreadsheet.getRangeList. 的方法签名不匹配 我真的每次读取 sheet 时都应该将数据附加到下一行。我将不胜感激解决挑战的任何帮助
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()
函数没有 return
它的结果。
要获取 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);
我有一个代码可以读取多个 sheet 中的两列 (D & H) 并将它们保存在数组中。我想做的是将此数组中的数据映射到一个分段 sheet 中的一行,但我保留 运行 一个错误:运行 变成一个错误 参数 (number,number,number,null) 与 SpreadsheetApp.Spreadsheet.getRangeList. 的方法签名不匹配 我真的每次读取 sheet 时都应该将数据附加到下一行。我将不胜感激解决挑战的任何帮助
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()
函数没有 return
它的结果。
要获取 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);