Либо используйте глобальную переменную, либо поместите значения в кеш.
Чтобы объявить глобальную переменную, объявите переменную вне функции:
var id = "";
var minutes = "";
function doGet(e) {
id = e.parameter.id;
minutes = e.parameter.min;
var html = . . . . . HTML HERE;
onRun(id, minutes);
return HtmlService.createHtmlOutput(html).setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
Или поместить значения в Cache:
function doGet(e) {
var id = e.parameter.id;
var minutes = e.parameter.min;
if (!!id) {cache.put('theid', id, 4000);};
if (!!minutes) {cache.put('min', minutes, 4000);};
var html = . . . . . HTML HERE;
onRun(id, minutes);
return HtmlService.createHtmlOutput(html).setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
Затем вы можете извлекать значения из кэша, или использования глобальная переменная в любом месте вашего кода.
Таким образом, вам не нужно передавать что-либо из HTML в код .gs
.
Я не вижу ничего, что вызывает функцию onRun()
в функции doGet()
.
Вы можете вызвать другую функцию из функции doGet()
, до тех пор, как это перед темreturn
. return
останавливает функцию в этой точке.
function doGet(e) {
var id = e.parameter.id;
var minutes = e.parameter.min;
var html = . . . . . HTML HERE;
onRun(id, minutes);
return HtmlService.createHtmlOutput(html).setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
Вы не можете иметь:
return HtmlService.createHtmlOutput(html).setSandboxMode(HtmlService.SandboxMode.IFRAME);
onRun(id, minutes);
Вы также можете запустить скрипт для запуска с помощью тега HTML Script с window.onload = function() {code};
:
<script>
window.onload = function() {
console.log("This onload did run");
code here;
};
</script>
Чтобы передать несколько переменных, просто отделить их запятой:
function doGet(e) {
code here;
onRun(id, minutes);
}
function onRun(argId, argMinutes) {
Logger.log('argId: ' + argId);
Logger.log('argMinutes: ' + argMinutes);
};
Благодарим вас за подробное описание, и я понимаю, что вы говорите. Однако я хочу, чтобы переменные передавались функции onRun() при нажатии кнопки. Это означает, что onRun (id, min) (или google.script.run.onRun (id, min)) необходимо запустить из HtmlService, а не непосредственно из gs-файла. –
Вам не нужно передавать переменные. Вам нужно поместить значения в Cache или в глобальную переменную. См. Мой обновленный ответ. –
Я протестировал с использованием частного кеша, и он произвел ошибку, когда я переключился на общедоступный, все сказанное работало должным образом. Я отправил второй ответ с обновленным кодом из моего оригинального сообщения. –