如何在ARRAYFORMULA中为一系列单元格使用自定义函数?

时间:2019-05-05 05:28:34

标签: google-apps-script google-sheets array-formulas

我有一个正在填充Google表格的Google表单。由于工作表中具有自定义公式来处理从表单填充的数据,因此我将ARRAYFORMULA应用于列中的所有行。

我有一个自定义函数来对包含html的行进行编码

<TextBox Grid.Row="1" Grid.Column="0" x:Name="testVal" x:Uid="testVal" Header="Laser" Text="{x:Bind TestProperty, Mode=TwoWay}"/>

当我在ARRAYFORMULA(base64EncodeWebSafe(T2:T))中调用此函数时

我收到错误消息“无法将数组转换为(class)[]。”

我希望发生的是将编码功能应用于范围T2:T

1 个答案:

答案 0 :(得分:0)

这在Custom Functions guide中有描述。我已经适应了指南中使用的实现,但是您可以做其他事情。基本上,如果使用ARRAYFORMULA,则需要将输入视为二维数组。

function base64EncodeWebSafe(input) {
  if (input.map) { // Test whether input is an array.
    return input.map(base64EncodeWebSafe)
  } else {
    try {
      return Utilities.base64EncodeWebSafe(input);
    } catch (e) {
      Utilities.sleep(1000);
      return Utilities.base64EncodeWebSafe(input);
    }
  }
}