Можно ли определить новую функцию в таблице Google-docs? - PullRequest
11 голосов
/ 29 января 2011

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

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

Ответы [ 2 ]

8 голосов
/ 28 июля 2011

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

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

0 голосов
/ 22 июня 2012

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

ДИАПАЗОН - это объект, связанный с «ЛИСТОМ». SHEET - это объект, связанный с «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», вы получаете доступ к одной ячейке.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...