2015-08-08 2 views
0

Я пытаюсь получить данные от использования формы на боковой панели, но я не могу использовать обычный способ в javascript, где я получаю его из документа в javascript.Получение данных с боковой панели в Google Apps?

т.е.

var form = document.getElementById("treasurerForm"); 

Итак, как я должен идти о получении данных из формы в боковой панели?

+0

Где вы это называете? Необходимо поделиться еще одним кодом. –

ответ

1

Вы должны общаться между боковой панелью (на стороне клиента) и скриптом Google Apps (на стороне сервера). Вы можете сделать это, используя google.script.run в javascript боковой панели.

function openSidebarForm() { 
    var htmlOutput = HtmlService.createHtmlOutputFromFile("sendForm"); 
    htmlOutput.setSandboxMode(HtmlService.SandboxMode.IFRAME).setTitle("Form"); 
    var ui = SpreadsheetApp.getUi(); 
    ui.showSidebar(htmlOutput); 
} 

function processForm(data) { 
    // here you can process the data from the form 
    Browser.msgBox(data); 
} 

И добавить HTML файл в проект под названием sendForm.html

<script> 
function sendForm() { 
    var data = document.forms[0].elements[0].value; 
    google.script.run.withSuccessHandler(ready).processForm(data); 
    document.getElementById("all").innerHTML = "Processing.."; 
} 
function ready() { 
    document.getElementById("all").innerHTML = "Processed!" 
} 
</script> 

<div id="all"> 
    <form id="form"><input type="text"></form> 
    <button onclick="javascript:sendForm();">Submit</button> 
</div> 

Кнопка в форме автоматически инициирует представить в форме, и здесь мы хотим только JavaScript, чтобы сделать работу , Поэтому мы внесли это вне формы.

Функция sendForm() принимает значение первого элемента формы. Затем он запускает функцию в вашем скрипте google. Поместив google.script.run. перед именем функции вы можете это сделать. Функция hasSuccessHandler (functionName) выполнит функцию обратного вызова на боковой панели после завершения функции.

Вы также можете ввести свой HTML-код в виде строки, а затем использовать HtmlService, который намного менее изящный, но он также будет работать, если у вас возникнут проблемы с добавлением html-файла в ваш проект.

function openSidebarForm() { 
    var html = '<script>function sendForm() {' 
    + 'var data = document.forms[0].elements[0].value;' 
    + 'google.script.run.withSuccessHandler(ready).processForm(data);' 
    + 'document.getElementById("processing").innerHTML = "Processing.."; }' 
    + 'function ready() {' 
    + 'document.getElementById("all").innerHTML = "Processed!" }' 
    + '</script>' 
    + '<div id="all"><div id="processing"></div>' 
    + '<form id="form"><input type="text"></form>' 
    + '<button onclick="javascript:sendForm();">Submit</button></div>'; 
    htmlOutput = HtmlService.createHtmlOutput(html).setSandboxMode(HtmlService.SandboxMode.IFRAME).setTitle("Form"); 
    var ui = SpreadsheetApp.getUi(); 
    ui.showSidebar(htmlOutput); 
} 

function processForm(data) { 
    // here you can process the data from the form 
    Browser.msgBox(data); 
} 

Удачи вам!

Смежные вопросы