Согласно документации , он возвращает значение null для большинства выполнений сценариев, если не используется в функциях doGet () или doPost () веб-приложения.
Тем не менее, я выполнил вашу функцию, и она возвращает содержимое ... вы можете дать нам какие-нибудь подсказки?
РЕДАКТИРОВАТЬ:
Похоже, он еще не работает с V8 Runtime. Я не знаю, решит ли это вашу проблему, но вы можете позвонить по номеру vanilla JS и вернуть его на сервер, используя Navigator object .
Code.gs
function doGet(e) {
var template = HtmlService.createTemplateFromFile('Index');
// Retrieve and process any URL parameters, as necessary.
if (e.parameter.folderId) {
template.folderId = e.parameter.folderId;
} else {
template.folderId = 'root';
}
// Build and return HTML in IFRAME sandbox mode.
return template.evaluate()
.setTitle('Web App Window Title')
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
function baz(userAgent) {
//var foo = HtmlService.getUserAgent();
Logger.log("userAgent: " + userAgent);
return 1;
}
JavaScript. html
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
/**
* Run initializations on web app load.
*/
$(function() {
// Call the server here to retrieve any information needed to build the page.
var ua = loadUserAgent();
google.script.run
.withSuccessHandler(function(contents) {
// Respond to success conditions here.
})
.withFailureHandler(function(msg) {
// Respond to failure conditions here.
})
.baz(ua);
});
function loadUserAgent() {
var ua = navigator.userAgent;
return ua;
}
</script>
appscript . json
{
"timeZone": "Europe/Paris",
"dependencies": {
},
"webapp": {
"access": "MYSELF",
"executeAs": "USER_DEPLOYING"
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8"
}
Проверьте это!