Использовать существующие формулы электронных таблиц в пользовательской формуле в документах / таблицах Google. - PullRequest
6 голосов
/ 10 сентября 2010

Мне нравится писать собственные формулы в таблицах Документов Google. Но часто то, что я хочу сделать, очень похоже на функцию, которая уже существует . Например, я не смог найти функцию, которая бы превращала дату (31 августа 2010 года) в лексический день недели (вторник). Я хотел бы написать:

=LexWeekDay('31-Aug-2010')
'Tuesday'

Ясно, что я могу написать всю эту логику, используя основной javascript, но уже существует нормальная функция электронной таблицы под названием WEEKDAY(), которая принимает дату и преобразуется в число, представляющее день неделя [0 => Sunday, 1=> Monday, etc].

Как я могу получить доступ к этой функции (или вообще к любой функции), которая уже определена в таблицах, из моего собственного скрипта?

Ответы [ 2 ]

1 голос
/ 05 января 2011

Я задавал тот же вопрос в Справке Google , но не нашел решения.По словам пользователя Ahab:

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

Обратите внимание, что в целом функции электронных таблиц уже практически могут использоваться в качестве функционального языка программирования без необходимости их написания из-за высокоуровневых функций, таких как ArrayFormula, FILTER, SORT, UNIQUE.и т. д. К сожалению, невозможно создать, например, макрос подстановки, который позволил бы нам быстро повторно использовать формулы, такие как (в псевдо-макро формате):

Имя: INVERSE Описание: Инвертировать столбчатый массив Синтаксис:#INVERSE (массив) Вызов: #INVERSE (# 1) Выполнить: = ARRAYFORMULA (SORT (# 1; ROW (# 1); FALSE))

0 голосов
/ 27 декабря 2016

В своем пользовательском приложении вы можете использовать встроенные формулы электронной таблицы Google следующим образом:

Допустим, вы хотите использовать функцию =WEEKDAY() в ячейке A1.

ТогдаПолучите свою активную электронную таблицу вот так в своей пользовательской функции приложения:

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("YOUR_SHEET_NAME");

сейчас, установите формулу следующим образом:

sheet.getRange("A1").setValue("=WEEKDAY()");

Также, если вы хотите конвертировать 0,1 и т. дв воскресенье, понедельник ... затем определите массив следующим образом:

var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];

И затем используйте:

var dayIndex = sheet.getRange("A1").getValue(); 
Logger.log(days[dayIndex]);

Вы можете просмотреть журналы, используя ctrl + enter или перейдя в View-> Журналы в самом редакторе скриптов.

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