Я пишу скрипт приложения Google, чтобы взять лист со строками:
StudentName, StudentID, Gender, CoursePreference1, CoursePreference2, CoursePreference 3
и вывод:
StudentName, StudentID, Gender, CoursePreference1
StudentName, StudentID, Gender, CoursePreference2
StudentName, StudentID, Gender, CoursePreference3
Я преобразую формат так, чтобы вместо одной строки на каждого учащегося со столбцом для каждого из их предпочтений у меня была строка для каждого предпочтения курса с повторяющейся информацией об учащемся.
Я пытался использовать другие ответы с вложенными циклами for и методом map, чтобы добраться туда, куда я иду, но я полностью завязан в узлах.
Первая половина моего кода, настраивающего два массива, работает нормально; каждый элемент studentInfo предназначен для повторения для каждого элемента связанного индекса courseInfo:
function requestFileConversion() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var input = ss.getSheetByName('Input');
var output = ss.getSheetByName("Output");
output.getRange('A2:I').clearContent();
output.getRange('A2:I').setNumberFormat('@STRING@');
var studentInfo = input.getRange(2, 1, input.getLastRow() - 1, 8).getValues();
var courseInfo = input.getRange(2, 9, input.getLastRow() - 1, 23).getValues();
var appendValues = [];
тогда вторая половина - то, где я сломался; моя полностью нефункциональная попытка выглядит так:
for (var i=0; i < courseInfo.length; i++) {
var requestCollection = [];
for (var j=0; j < courseInfo[i].length; j++) {
requestCollection.push(studentInfo[i] + courseInfo[j]);
};
if (requestCollection.length > 0) {
Array.prototype.push.apply(appendValues, requestCollection);
};
};
Желаемые результаты преобразования должны идти из набора строк в форме:
Jenny, id100, F, English, Science, Math, Physics
Johnny, id101, M, Science, Sports, Gym, English
и производим:
Jenny, id100, F, English
Jenny, id100, F, Science
Jenny, id100, F, Math
Jenny, id100, F, Physics
Johnny, id101, M, Science
Johnny, id101, M, Sports
Johnny, id101, M, Gym
Johnny, id101, M, English