Есть несколько проблем с вашим скриптом.
1) Ваша функция OplionList () объявлена, но не вызвана. Вам все еще нужно явно вызвать функцию (см. Ниже) или обернуть ваш код в немедленно вызванное выражение функции.
<body>
<h1>Hello world</h1>
<script>
function myFunc(){
console.log(5);
}
myFunc(); //calls the function
</script>
</body>
или
<script>
(function(){
console.log(5);
})();
2) Во-вторых, вы не можете напрямую вызывать функции Apps Script со стороны клиента. Код на стороне клиента отображается вашим браузером, в то время как код GAS выполняется на серверах Google, поэтому среда выполнения не является общей. Классы Apps Script, такие как SpreadsheetApp, DocumentApp и другие, не могут быть волшебным образом перенесены в вашу локальную браузерную программу. Тем не менее, Google предоставляет способ вызова функций GAS с использованием асинхронного JavaScript API.
Рассмотрите возможность перемещения OplionList () в файл .gs, вызовите его из клиента с помощью google.script.run, а затем вставьте строку HTML в страницу, используя функцию на стороне клиента. Выходные данные функции сервера передаются в качестве аргумента для обратного вызова withSuccessHandler. Вот простейший сценарий рендеринга сгенерированного сервером содержимого внутри div:
<body onload="populateContainer()">
<div id="container">Loading...</div>
...
<script>
var container = document.getElementById("container");
function populateContainer(){
google.script.run
.withSuccessHandler(function(html){
container.innerHTML = html;
})
.withFailureHandler(function(error){ console.log(error);})
.OplionList(args);
}
</script>
</body>
Подробнее о взаимодействии клиент-сервер в GAS https://developers.google.com/apps-script/guides/html/communication
Другой метод - использовать скриптлеты для создания ваших шаблонов.
https://developers.google.com/apps-script/guides/html/templates#scriptlets
Имейте в виду, что это замедлит работу вашего кода.