我是Google Apps脚本的新手,但我花了很多时间进行研究,但空洞了。基本上,我正在尝试复制SQL的交叉联接功能。我有2个表,一个12个月的日历表和一个3个客户的客户表。客户表是通过Google表单填充的,今后还会添加新客户。
对于我的报告,我需要每月提供客户数据。因此,我想将客户数据与日历交叉连接,以创建一个包含36行的数据集,其中每个客户都有12行,每月一个。
基于我在stackoverflow上找到的其他代码,我已经接近了。现在的问题是,我的两个数据集最终显示在后续行中,这似乎与我处理数组的方式有关。我也尝试过使用push.apply和.concat获得完全相同的结果。
任何帮助将不胜感激!可以找到工作簿here
此外,日历表不是严格必需的-我只是来自SQL背景,所以我的第一个直觉是制作日历表并创建交叉联接。如果您想出一种更好的方法来接受来自Google表单的一行客户数据并输出连续添加了月份和年份的X行,请告诉我!
免责声明::我知道在SQL数据库中可以更好地处理这种交叉联接方法,并且Google表格不是为此设计的。在设计更好的长期解决方案时,这是一个临时解决方法。此解决方法的客户数据集总数可能少于100个客户,并且正在以大约每周1个客户的速度增长。
scenic
答案 0 :(得分:1)
您可以使用concat
之类的数组方法来获得相同的结果。
function sqlCrossJoin(arr1, arr2) {
arr1 = arr1 || [['jan', 1], ['feb', 2]];
arr2 = arr2 || [
['Jane Doe', 1983, 'PortLand', 'Oregon'],
['John Smith', 1984, 'San Francisco', 'California'],
];
var output = [];
arr1.forEach(function(month) {
arr2.forEach(function(customer) {
output.push(month.concat(customer));
});
});
return output;
/* Expected Output:
[ [ 'jan', 1, 'Jane Doe', 1983, 'PortLand', 'Oregon' ],
[ 'jan', 1, 'John Smith', 1984, 'San Francisco', 'California' ],
[ 'feb', 2, 'Jane Doe', 1983, 'PortLand', 'Oregon' ],
[ 'feb', 2, 'John Smith', 1984, 'San Francisco', 'California' ] ]*/
}