Как использовать momentsjs в скрипте Google Apps?
Я пытаюсь использовать библиотеку momentjs в скрипте Google Apps, но я не понимаю, как это сделать. Я не уверен, как добавить библиотеку, поэтому, очевидно, работает что-то вроде следующих результатов в "ошибка ссылки:"момент" не определен":
var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
var difference = a.diff(b);
4 ответов
использование внешней библиотеки Javascript не так просто... В зависимости от контекста, в котором вы хотите его использовать (webapp встроенного скрипта документа), подход будет другим.
Я не пробовал это в клиентском JavaScript, и я не уверен, что caja позволит это, но я нашел этот пост, который показывает возможный способ включить его с помощью библиотеки сценариев Google что у пользователя есть сборка, и если я прочитаю сообщение, оно, кажется, работает...
"пользователь" - это Google developper, чтобы он точно знал, о чем он говорит ;) пожалуйста, обновите здесь, если это сработало для вас.
большинство людей пытаются использовать библиотеку с ключом, заканчивающимся на 48. Эта библиотека довольно устарела (это версия 2.9, которая довольно старая).
используя eval
и UrlFetchApp.fetch
момент.js или любую другую внешнюю библиотеку можно легко использовать в сценариях приложений google.
function testMoment() {
eval(UrlFetchApp.fetch('https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js').getContentText());
var date = moment().format("MMM Do YY");
Logger.log(date)
}
вы можете либо принять момент.js на вашем собственном сервере или используйте CDN как Cloudflare CDN для ссылки на библиотеку.
для cloudflare, вот страница, которая показывает момент.версий JS и их URL:
как писать этот пост 2.18.1-это последняя версия.
для примера, опубликованного OP, он будет выглядеть так:
function testMomentDifference() {
eval(UrlFetchApp.fetch('https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js').getContentText());
var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
var difference = a.diff(b);
Logger.log(difference);
}
вы можете добавить момент и момент.TZ to App скрипты, создав новый Script file
и добавляем следующий код:
var cacheExpire = 3600;
var momentCache = "momentCache";
var momentUrl = "https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"
var momentTzCache = "momentTzCache";
var momentTzUrl = "https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.16/moment-timezone-with-data-2012-2022.min.js"
useCachedOrLive(momentCache,momentUrl);
useCachedOrLive(momentTzCache,momentTzUrl);
function useCachedOrLive(cacheToCheck, url){
var cache = CacheService.getUserCache();
var cachedData = cache.get(cacheToCheck);
console.log(cacheToCheck);
if(cacheToCheck !== null){
console.log("using cached " + cacheToCheck)
eval(cachedData);
}
else
{
console.log("getting live " + cacheToCheck);
var response = UrlFetchApp.fetch(url).getContentText();
cache.put(cacheToCheck, response, cacheExpire);
eval(UrlFetchApp.fetch(url).getContentText());
}
}
это использует службу кэша для уменьшения вызовов туда и обратно, и вы можете изменить его, чтобы включить подмножество данных, если хотите.
спасибо отель Arosa для начала меня!
Я создал обновленную версию момент для Appscript (версия V2.19.3 с районов). Это библиотека-Mlj57Yi463PVmHumHxq4bkaUlUqvRc4Kt, чтобы начать использовать его добавить библиотеку, а затем сделать момент глобальной переменной, как показано ниже.
var moment = Moment.moment