Отказ от ответственности: я полностью понимаю риски / недостатки использования eval, но это один из нишевых случаев, когда я не мог найти другой путь.
В скриптах Google Apps до сих пор нет встроенной возможности импортировать скрипт в виде библиотеки, поэтому многие листы могут использовать один и тот же код; но - это встроенное средство, с помощью которого я могу импортировать текст из открытого текста.
Вот код подтверждения:
var id = [The-docID-goes-here];
var code = DocsList.getFileById(id).getContentAsString();
var lib = eval(code);
Logger.log(lib.fetchDate());
Вот пример кода, который я использую во внешнем файле:
{
fetchDate: function() {
var d = new Date();
var dateString = (d.getMonth() + 1) + "/" + d.getDate() + "/" + d.getFullYear();
return dateString;
}
}
То, к чему я стремлюсь, это поместить большой литерал объекта (содержащий весь код библиотеки) в локальную переменную, чтобы я мог ссылаться на его свойства / функции, как если бы они содержались в их собственном пространстве имен.