Можно ли определить новую функцию в электронной таблице Google-документов?

Можно ли определить функцию в электронных таблицах Google, которая может использоваться в любой ячейке?

Было бы полезно, если бы я мог определять и использовать функции, которые относятся к другим ячейкам, таким же образом, что я могу использовать собственные функции, например. введя =myfunction(C1, C2, C3)

Ответ 1

Да - там учебник. Просто используйте javascript-функции по имени в своей электронной таблице. Определите их, используя Tools > Script editor.

Следите за ограничениями имен; Меня смутило поведение функций, которые я создал с именами типа "function x10() {}", которые не были найдены. Переименование на более длинное имя зафиксировано. Есть, вероятно, документированные правила того, что не разрешено, но я не знаю, где они находятся.

Ответ 2

Я "новичок". Но есть ли мой опыт, что вы можете получить доступ только к "ячейке", через объект "range". Вы должны определить диапазон как одну ячейку. Например, "A1: A1", вы получите доступ к ячейке в "A1".

RANGE - это объект, связанный с "ЛИСТОМ". ЛИСТ - это объект, связанный с "SPREADSHEET".

Вот пример кода для доступа к ячейке A1 в текущем активном листе:

var cell_A1 = SpreadsheetApp.getActiveSheet().getRange("A1:A1");

Отсюда вы можете передать объект, как и любой другой параметр.

myFunction(cell_A1);

Функция приема должна "знать", что она имеет дело с "диапазоном". Он может получить доступ только к своим значениям, вызвав "методы", связанные с объект "диапазон".

Будьте осторожны! "Диапазон" может состоять из более чем одной ячейки. Ваш призванный функция должна проверить, что она работает с одной ячейкой. Если вы передадите диапазон более чем одной ячейки, ваша функция может не действовать так, как вы ожидаете.

Два метода объекта диапазона: "getNumRows()" и "getNumColumns()" возвращает числа строк и столбцов в объекте диапазона.

В общем, если вы используете методы, которые ограничены изменением или доступом одной ячейке и работать с большим диапазоном, функция будет только выполняемый на элементе верхней левой ячейки. Но будь осторожен. Пока ты может предположить, что метод изменит только одну ячейку, она может фактически влияют на все клетки в диапазоне. Внимательно прочитайте документацию.

Существует еще один способ получить диапазон одной ячейки. Его инструкция выглядит следующим образом:

var cell_B2 = SpreadsheetApp.getActiveSheet().getRange(2, 2, 1, 1).

Первые два параметра сообщают функции getRange расположение ячейка (в строке, в формате столбца). Вторые два параметра определяют количество "строки" и "столбцы", связанные с диапазоном. Установив их как "1", вы получаете доступ к одной ячейке.

Надеюсь, что это поможет.