脚本:将来自多个单元的数据合并为一个

时间:2014-01-08 21:04:42

标签: google-apps-script google-sheets

我在谷歌电子表格中整理了一个相当冗长的电子表格。这个电子表格包含有关产品的信息,例如名称,品牌,部件号等......我以前曾得到过帮助并提供了一些不错的解决方案,但我仍然遇到了限制。

我要做的是根据其他单元格中的信息自动生成描述字段。

我在说明栏中使用的公式是="Brand Name"&" "&A3&" "&B3&" "&(joinVals(E3:G3," x "))&" "&K3

joinVals(E3:G3," x ")将包含长度(E)宽度(F)高度(G)的单独列连接在一起,并在值之间添加“x”。这导致E x F x G

此脚本适用于上述公式

function joinVals( rangeValues, separator ) {
function notBlank(element) {return element != '';}

return rangeValues[0].filter(notBlank).join(separator);
}

但是我不断收到此错误“此Google用户帐户每秒调用脚本的次数太多了。”

我想知道如果我可以将此作为数组来避免错误,因为此doc包含1000+ ROWS。

当我说完所有的结果时,我希望实现的结果应该是这样的 “品牌名称”部件号(A)产品名称(B)尺寸(长x宽x高)尺寸(K)

我应该运行ARRAY脚本吗?

非常感谢你们,这个论坛得到了这样的帮助!

1 个答案:

答案 0 :(得分:1)

可以使用阵列解决方案,但您必须更改电子表格中使用公式的方式。最简单的解决方案是直接使用内置电子表格公式。此处无需自定义Apps脚本公式。

="Brand Name"&" "&A3&" "&B3&" "&(join(" x ";filter(E3:G3;E3:G3<>"")))&" "&K3

如评论中的AdamL所示,这是一个仅使用内置公式的ArrayFormula解决方案。

=ArrayFormula(IF(LEN(A3:A),REGEXREPLACE("Brand Name "&A3:A&" "&B3:B&" "&REPT(E3:E&" x ",E3:E<>"")&REPT(F3:F&" x ",F3:F<>"")&REPT(G3:G&" x ",G3:G<>"")&CHAR(9)&" "&K3:K,"( x \t)|\t",""),))

正如我所说,在编写自定义Apps脚本时也可以使用这种ArrayFormula样式的解决方案。当有(可以说)更简单的内置解决方案(但肯定更快,更大的配额)时,我认为这不值得。