Можно ли программно отключить библиотеки скриптов Google Apps? - PullRequest
0 голосов
/ 01 апреля 2019

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

Итак, пока я выясняю, как настроить механизм подписки для скрипта Google Apps (это уже где-то было разработано?), Как вы удерживаете людей от использования вашей коллекции?

Я думал о чем-то вроде

function WHATEVER() {
    if (!Subscribed()) {
        return new Error("Subscription not current");
    }
    // ... rest of function
}

Это нормально, я полагаю, но есть ли лучший способ?

1 Ответ

1 голос
/ 01 апреля 2019

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

Но даже использование кеша может быть бременем. Я не уверен, насколько это обременительно, вам нужно будет это проверить или получить отзывы пользователей.

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

Поскольку каждое имя функции отличается, вам нужно добавить оператор if в каждую функцию, но я не думаю, что есть альтернатива тесту в каждой функции.

Вы не показывали свою функцию Subscribed(), поэтому я предоставлю предложение.

function Subscribed_() {
  var cache,usrProps,expireDate,todaysDate;
  cache = CacheService.getUserCache();

  todaysDate = new Date();
  todaysDate = todaysDate.getTime();//Today's date in milliseconds

  expireDate = cache.get('expDate');//Get the expiration date

  if (expireDate === null) {//No value stored in cache
    //Now look up persistent value
    usrProps = PropertiesService.getUserProperties();
    expireDate = usrProps.get('expDate');//Get the expiration date
  }

  if (!expireDate) {
    return false;
  }

  expireDate = Number(expireDate);//Store the expiration date in milliseconds

  if (todaysDate < expireDate) {
    return true;
  } else {
    return false;
  }

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