I can't seem to wrap my head around 2D arrays. I have set up the following code. but I'm unable to get setValues to work (the end of the code.)
I'm pretty sure I need to set it up as an array, but every way I've tried to set it up has resulted in a different error message. How do I properly set up the array so that all of the students' data for each class (k) gets sent to each class tab?
function onSearch() {
var sheetID = DriveApp.getFilesByName('Dash').next().getId();
var ss = SpreadsheetApp.openById(sheetID);
var sheet = ss.getSheetByName("Master List");
//Loop through Class List, get Course Codes
var classes = ss
.getSheetByName("sheetInfo")
.getRange(1, 2, 3)
.getValues();
//Loop through courses
for (var k = 0; k < classes.length; k++) {
var classCode = classes [k];
var searchVal = classCode;
var column = 18;
//Get Course Sheets
var classSheetArray = ss.getSheetByName("sheetInfo")
.getRange(1, 1, 3)
.getValues();
var classSheetName = classSheetArray [k];
var classSheet = ss.getSheetByName(classSheetName);
//Insert headers into Class sheets
sheet.getRange(1, 1, 1, 17).copyTo(classSheet.getRange(1, 1, 1, 17));
//Loop through 9 different course codes from student timetable
for (var j = 0; j < 9; j++) {
var searchCol = sheet.getRange(2, column+j, sheet.getLastRow())
.getValues();
for (var i = 0, len = searchCol.length; i < len; i++) {
//Take the data from the search and place it in the corresponding class tab.
//This data will have 17 columns and the number of rows is dependent on the number of returned students.
if (searchCol[i][0] == searchVal) {
var lastRow = classSheet.getLastRow();
var sourceInfo = sheet.getRange(i+2, 1, 1, 17)
.getValues();
tempArray = [];
tempArray.push(sourceInfo[i]);
Logger.log(tempArray); // WHEN I LOG THE ARRAY THE DATA LOOKS LIKE [[col 1, col 2 ...]][[col 1, col 2 ...]]...
classSheet.getRange(lastRow+1,1,1,sourceInfo.length) //DEFINITELY KNOW THIS TO BE WRONG...
.setValues(tempArray[0][i]);
}
}
}
}
}