Переменная JavaScript (или структурированные данные) для таблиц Google при написании сценариев онлайн?Что-нибудь кроме функций? - PullRequest
0 голосов
/ 29 марта 2019

Мы можем написать пользовательские функции в javascript, который мы вызываем из стандартного графического интерфейса Google Sheets: например,

=myFunction(a, b, 'c')

Но есть ли способ прямого доступа к структуре данных, а не через функцию? Например, я хочу иметь некоторые структурированные данные / объекты javascript и получать данные примерно так, как показано ниже, без использования функционального подхода?

=friends['mike'].birthday

1 Ответ

1 голос
/ 29 марта 2019

Нет, это не поддерживается.Вы можете получить доступ только к частным функциям, объявленным с помощью function из Sheets.Чтобы узнать точные ограничения, ознакомьтесь с «Руководством по пользовательским функциям» .

Кроме того, нет постоянных изменений глобальных переменных, поскольку каждый вызов выполняется с «чистого листа», как определено вашим буквальным текстом проекта.,Таким образом, в вашем примере ваш объект "friends" должен быть полностью статичным для использования, или должен быть неглобальным, который создается функцией доступа, например, десериализованный из CacheService или PropertiesService, илизагружается из некоторой удаленной конечной точки.


var friends = {
  "mike": {
    birthday: new Date("..."),
     ...
  },
  ...
};
function FRIENDINFO(friend, property) {
  if (friends[friend]) {
    return friends[friend][property];
  }
  return "No friend named " + friend;
}

Обратите внимание, что использование PropertiesService, CacheService или UrlFetchApp в пользовательской функции может быстро привести к снижению производительности и нарушению квот, если вы не планируете свою функцию длядиапазон ввода и диапазон вывода.

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

...