Доступ к постоянному хранилищу при каждом запуске функции для проверки того, подписан ли пользователь на подписку или нет, увеличивает время обработки. Таким образом, ваша функция 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;
}
}