I am creating a script that copies data from one sheet and pastes to another. The sheets can be in different workbooks and the data range can be multiple columns. Although I have made all the script that worked perfectly fine earlier, but I made some changes in it. Now it is showing TypeError: file1(...).copyColumns.copyTo is not a function
this error. I know there might be just a small mistake that I am missing. I have spent 3-5 hours finding it but no luck. any help would be highly appreciated.
Script for File 1
function file1(url, sheet, selected_columns, headerRow) {
url = "Workbook 1 url"
sheet = "sheet to copy from"
selected_columns = ['Column 1 Name', 'Column 2 Name', 'Column 3 Name']
headerRow = '1'
var file = SpreadsheetApp.openByUrl(url)
copyColumns = []
sheetsNames = []
var sheets = file.getSheets();
for (var i=0 ; i<sheets.length ; i++) sheetsNames.push(sheets[i].getName())
var selected_sheet = file.getSheetByName(sheet);
var lastCol = selected_sheet.getDataRange().getLastColumn();
var columns = selected_sheet.getRange(headerRow,1,headerRow,lastCol).getValues();
for (i=0; i<selected_columns.length; i++){
let column = columns[0].indexOf(selected_columns[i]);
if (column != -1) {
var copy = copyColumns.push(selected_sheet.getRange(1, column + 1, selected_sheet.getMaxRows()));
Logger.log(column +1)
}
}
Logger.log(sheetsNames)
Logger.log(selected_columns)
Logger.log(copyColumns)
return {url, sheet, copyColumns}
}
Script for File 2
function file2(url, sheet, selected_columns, headerRow) {
url = "workbook 2 url"
sheet = "sheet to paste in"
selected_columns = ['Column 1 Name', 'Column 2 Name', 'Column 3 Name']
headerRow = '1'
var file = SpreadsheetApp.openByUrl(url)
pasteColumns = []
sheetsNames = []
var sheets = file.getSheets();
for (var i=0 ; i<sheets.length ; i++) sheetsNames.push(sheets[i].getName())
var selected_sheet = file.getSheetByName(sheet);
var lastCol = selected_sheet.getDataRange().getLastColumn();
var columns = selected_sheet.getRange(headerRow,1,headerRow,lastCol).getValues();
for (i=0; i<selected_columns.length; i++){
let column = columns[0].indexOf(selected_columns[i]);
if (column != -1) {
var copy = pasteColumns.push(selected_sheet.getRange(1, column + 1, selected_sheet.getMaxRows()));
Logger.log(column +1)
}
}
Logger.log(sheetsNames)
Logger.log(columns)
Logger.log(selected_columns)
Logger.log(pasteColumns)
return {url, sheet, pasteColumns}
}
The script that runs both above functions together
function agg_test(){
Logger.log(file1().copyColumns)
for (i=0; i<file1().copyColumns.length; i++){
file1().copyColumns[i].copyTo(file2().pasteColumns[i]);
}
}