Скрипт Google Apps: как сохранить данные в электронной таблице между различными вызовами функций? - PullRequest
3 голосов
/ 07 ноября 2011

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

Я не хочу использовать ячейки, которые могли бы быть другим способом.

Другой вопрос, возможно ли создать (псевдо) занятия в этой среде?Лучший способ?

Ответы [ 3 ]

9 голосов
/ 15 апреля 2015

Оба ScriptProperties и ScriptDB устарели.

Вместо этого следует использовать новый класс PropertiesService, который разделен на три раздела сужающейся области действия:

  • Документ - получает хранилище свойств, к которому все пользователи могут получить доступ в текущем документе, если скриптпубликуется как надстройка.
  • Сценарий - получает хранилище свойств, к которому могут получить доступ все пользователи, но только в этом сценарии.
  • Пользователь - Получает хранилище свойств, к которому имеет доступ только текущий пользователь, и только в этом сценарии.

Вот пример сохранения свойства пользователя при вызовах:

var properties = PropertiesService.getScriptProperties();

function saveValue(lastDate) {
  properties.setProperty('lastCalled', lastDate);
}

function getValue() {
  return properties.getProperty('lastCalled');
}

Сценарийсреда выполнения не имеет состояния, поэтому вы не можете получить доступ к локальным переменным из предыдущих запусков, но вы можете сохранить getScriptProperties() в локальной переменной, потому что она будет перезапускаться для каждой обратной поездки на сервер, поэтому ее можно вызывать в любом из методов.


Если вам нужно что-то хранить наболее временно, вы можете использовать CacheService API

2 голосов
/ 19 ноября 2011

Постоянные данные могут быть сохранены с использованием класса ScriptProperties:

http://code.google.com/googleapps/appsscript/class_scriptproperties.html

Все значения сохраняются в виде строки и должны быть преобразованы обратно с помощью like или parsInt или parseFloat, когдаони извлекаются.

Объекты JSON также могут быть сохранены таким образом.

1 голос
/ 10 ноября 2011

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

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