У меня есть код сценария приложения Google Таблиц, который обращается к API и обновляет поле на боковой панели на основе некоторого ввода пользователя. Все работает так, как ожидалось, за исключением кнопки, используемой для вызова вызова API с боковой панели. По какой-то причине нажатие кнопки открывает новую, пустую вкладку в браузере.GAS - Предотвратить событие нажатия кнопки при открытии новой вкладки браузера
Моя лучшая догадка заключается в том, что я каким-то образом реализую google.script.run.withSuccessHandler()
, но я не смог это подтвердить. Любая помощь приветствуется.
Sidebar.html
Это полный файл врезка, что я использую.
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">
</head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(function() {
$('#narrative-from-selection').click(getNarrative);
});
function getNarrative(narrative) {
//document.getElementById('narrative-response').innerHTML = narrative.replace(new RegExp('\r?\n','g'), '<br />');
var projectName = $('#project-name').val();
var templateName = $('#template-name').val();
google.script.run
.withSuccessHandler(
function(narrative) {
$('#narrative-response').html(narrative);
})
.withUserObject(this)
.generateContentForSelected(projectName, templateName);
}
</script>
<body>
<div>
<br />
<br />
<form>
Project Name: <input type="text" name="project-name" id="project-name" onchange="google.script.run.updateProjectAndTemplateNames(this.parentNode)"><br />
Template Name: <input type="text" name="template-name" id="template-name" onchange="google.script.run.updateProjectAndTemplateNames(this.parentNode)"><br />
<button id="narrative-from-selection">Generate from Selection</button><br /><br />
Response:<br /><br />
<div id="narrative-response"></div>
</form>
</div>
</body>
</html>
Code.gs
Вот обзор соответствующей функции, которые я использую (инфо используется ударить API удаляется, но я проверил, что штучные много раз, и он возвращается в точности что я ожидаю, что он отправит обратно).
function generateContentForSelected(projectName, templateName) {
// go do some API magic here
var narrative = "This is a test string.";
return narrative;
}