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

How to use a custom function in an ARRAYFORMULA for a range of cells?

我有一个 Google 表单正在填充 Google Sheet。由于 sheet 中有自定义公式来操作从表单填充的数据,我使用 ARRAYFORMULA 应用于列中的所有行。

我有一个自定义函数来编码包含 html

的行
function base64EncodeWebSafe(input) {

  try {
    // Try and fetch the specified url.
    return Utilities.base64EncodeWebSafe(input);

  } catch (e) { 
    Utilities.sleep(1000);
    return Utilities.base64EncodeWebSafe(input);

  }
}

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

我收到一条错误消息"Cannot convert Array to (class)[]."

我期望发生的是将编码函数应用到范围 T2:T

这在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);
    }
  }
}