Как использовать пользовательскую функцию в ARRAYFORMULA для диапазона ячеек? - PullRequest
0 голосов
/ 05 мая 2019

У меня есть форма Google, которая заполняет лист Google. Из-за наличия пользовательских формул на листе для управления данными, заполненными из формы, я использую 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))

Я получаю сообщение об ошибке «Не удается преобразовать массив в (класс) [].»

Я ожидаю, что произойдет применение функции кодирования к диапазону T2: T

.

1 Ответ

0 голосов
/ 05 мая 2019

Это описано в Руководстве по пользовательским функциям .Я адаптировал реализацию, использованную в руководстве, но вы можете сделать что-то еще.В основном, если вы используете 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);
    }
  }
}
...