Сводка
Я новичок в Google Apps Script, но я потратил довольно много времени на исследования и оказался пустым.В основном я пытаюсь повторить функциональность перекрестного соединения SQL.У меня есть 2 таблицы, календарь с 12 месяцами и таблица с 3 клиентами.Таблица клиентов заполняется из формы Google, и в дальнейшем будут добавляться новые клиенты.
Для моих отчетов мне нужны данные о клиентах, чтобы они были ежемесячными.Поэтому я хочу объединить данные клиента с календарем, чтобы создать набор данных с 36 строками, где у каждого клиента есть 12 строк, по одной в месяц.
Основываясь на другом коде, который я нашел в stackoverflow, яподобрался близко.Моя проблема сейчас в том, что мои два набора данных в конечном итоге отображаются в последующих строках, что похоже на проблему с тем, как я обрабатываю свои массивы.Я также пытался использовать push.apply и .concat с точно такими же результатами.
Любая помощь будет оценена!Книгу можно найти здесь
Кроме того, таблица календаря не является строго необходимой - я просто пришел из фона SQL, поэтому мой первый инстинкт был создать таблицу календаря и создать перекрестное соединение,Если вы можете придумать лучший способ принять одну строку данных о клиентах из формы Google и вывести X строк с добавленными последовательными месяцами и годами, дайте мне знать!
Отказ от ответственности: IЯ знаю, что этот метод перекрестного соединения будет лучше обрабатываться в базе данных SQL, и что Google Sheets не предназначен для этого.Это временный обходной путь, пока разрабатывается лучшее долгосрочное решение.Набор данных клиента, скорее всего, будет содержать менее 100 клиентов для этого обходного пути и будет расти со скоростью примерно 1 клиент в неделю.
Календарь Таблица
Таблица клиентов
Пользовательский код
function crossJoin(tabl1, tabl2, header) {
var output = [];
var days = tabl1;
var customer = tabl2;
if(header) {output.push([header[0][1], header[0][0]])};
for(var i = 1, iLen = customer.length; i < iLen; i++) {
// output.push(days[i]);
for(var j = 1, jLen = days.length; j < jLen; j++) {
output.push(days[j],customer[i]);
}
}
return output;
}
Токовый выход
Желаемый выход