Я хочу передать объект в функцию сервера с помощью Google Apps Script. Но у меня проблема с этим:
<?= config.bob ?>
<button type="button" onclick="google.script.run.sayHiObject(<?= config ?>)">
Run Bob
</button>
Когда я нажимаю кнопку с надписью Запустить Боба , я ожидаю увидеть сообщение с предупреждением:
Привет, Боб!
Но вместо этого он говорит:
Привет, undefined!
Это на странице написано:
Допустимыми параметрами являются JavaScript примитивы, такие как Number, Boolean, String или null, , а также JavaScript объекты и массивы, которые являются состоит из примитивов, объектов и массивов. [Выделение мое]
Итак, я предполагаю, что можно пропустить объект. Тем не менее, моя демонстрация, показанная ниже, только доказывает, что можно передать строку таким образом. У объекта, похоже, есть проблема.
Что я делаю не так?
Рис. 1. Демонстрация.
Запустите Алису и
Запустите Charl ie, успешно передайте строки в качестве аргументов. Но
Run Bob не может передать объект в качестве аргумента.
Code.gs
var TITLE = 'Say hi to:';
var HTML_FILENAME = 'index';
var ui = SpreadsheetApp.getUi();
function handleEdit(e) {
var template = HtmlService.createTemplateFromFile(HTML_FILENAME);
template.alice = 'Alice';
template.config = { bob: 'Bob', charlie: 'Charlie' };
var htmlOutput = template.evaluate();
ui.showModalDialog(htmlOutput, TITLE);
}
function sayHi(name) {
var msg = 'Hi, ' + name + '!';
ui.alert(msg);
}
function sayHiString(name) {
sayHi(name);
}
function sayHiObject(config) {
sayHi(config.name);
}
index. html
<!DOCTYPE html>
<html>
<body>
<?= alice ?>
<button type="button" onclick="google.script.run.sayHiString(<?= alice ?>)">
Run Alice
</button>
<?= config.bob ?>
<button type="button" onclick="google.script.run.sayHiObject(<?= config ?>)">
Run Bob
</button>
<?= config.charlie ?>
<button type="button" onclick="google.script.run.sayHiString(<?= config.charlie ?>)">
Run Charlie
</button>
</body>
</html>