То, что принимает редактор сценариев, и то, что принимает Google Sheets, может отличаться? - PullRequest
1 голос
/ 27 марта 2019

Итак, я пытался создать функцию AADD (диапазон, диапазон).Это не завершено, так что не тряхните меня об этом.На данный момент меня беспокоит то, что редактор сценариев в значимом коде и то, что будут запускать Google Sheets, выглядят иначе.

Прежде всего, вот тестер:

function test_AADD() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range1 = sheet.getRange("B2:E2");
  var range2 = sheet.getRange("B3:D3");
  var result = AADD(range1, range2);
}

диапазоны намеренно не совпадают по длине, потому что я пытаюсь выяснить, как отсылать обратно стандартные сообщения об ошибках типа "#ERROR!"(некоторая помощь там тоже поможет.)

Вот публичная функция AADD.Надеюсь, однажды я узнаю, как сделать функции приватными (еще одна вещь, с которой мне нужна помощь.)

/**
 * Adds two arrays
 *
 * @param {Range} range1 The first parameter
 * @param {Range} range2 The second paramter
 * @return {Range}
 * @customfunction
 */
function AADD(range1, range2) {
  return fnAADDrr(range1, range2);
}

(в конечном счете) приватная функция, которая реализует код AADD (поверьте мне, смысл в безумии) - это

function fnAADDrr(range1, range2) {
  var r1len = range1.getNumRows() * range1.getNumColumns();
  var r2len = range2.getNumRows() * range2.getNumColumns();
  if (r1len !== r2len) {
    return new Error("#ERROR!");
  }   
}

На этом этапе функция идет так далеко, потому что я просто пытаюсь понять, как проверить диапазон, в котором не так много элементов, как у другого.

Итак, теперь мы переходим к основной проблеме: когда у меня есть скрипт, редактор скриптов не жалуется на вызовы методов переданных переменных Range1 и Range2.И когда я запускаю функцию test_AADD в редакторе сценариев, я получаю наиболее разумный ответ (за исключением того, что «новая ошибка» на самом деле не возвращается - что-то еще, с чем мне нужна помощь.)

ИтакЯ возвращаюсь к своему файлу Google Sheets.В ячейке я набираю

=AADD(B2:D2,B3:D3)

Теперь это даже не будет запускать бит "новая ошибка", потому что диапазоны имеют одинаковый размер.Тем не менее, я получаю "#ERROR!"который, если навести на него курсор мыши, я получу

TypeError: Cannot find function getNumRows in object 1,2,3 (line 73) 

, где 1,2,3 - это то, что находится в B2: D2, а строка 73 - это местоположение в файле сценария.

Так почему же редактор сценариев и Google Sheets не могут договориться о том, что разрешено?

...