2017-02-05 3 views
1

Сначала я предоставлю вам код и кратко объясню, что я пытаюсь выполнить.HTML-форма сценария Google Apps не будет отправляться

Code.gs

function onOpen() { 
    SpreadsheetApp.getUi() // Or DocumentApp or FormApp. 
     .createMenu("Custom Menu") 
     .addItem("Show sidebar", "showSidebar") 
     .addToUi(); 
} 

function doGet() { 
    return HtmlService.createHtmlOutputFromFile("entry"); 
} 

function showSidebar() { 
    var html = HtmlService.createHtmlOutputFromFile("entry") 
     .setTitle("My custom sidebar") 
     .setWidth(300); 
    SpreadsheetApp.getUi() // Or DocumentApp or FormApp. 
     .showSidebar(html); 
} 

function EnterData(fobject) { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName("Sheet1"); 
    sheet.activate(); 

    ss.toast("Something Happened"); 

    var range = sheet.getRange(1, 1); 
    range.setValue("It worked"); 
} 

function ProgramSuccess() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    ss.toast("Program Run Complete"); 
} 

entry.html

<!DOCTYPE html> 
<html> 
    <head> 
    <base target="_top"> 
    <script> 
     // Prevent form from submitting 
     function preventFormSubmit() { 
     var forms = document.querySelectorAll('form'); 
     for (var i = 0; i < forms.length; i++) { 
      forms[i].addEventListener('submit', function(event) { 
      event.preventDefault(); 
      }); 
     } 
     } 
     window.addEventListener('load', preventFormSubmit); 

     function FormSubmit(formObject) { 
     google.script.run.withSucessHandler(FormSuccess).EnterData(formObject); 
     } 
     function FormSuccess() { 
     google.script.run.ProgramSuccess; 
     google.script.host.close(); 
     } 
    </script> 
    </head> 

    <body> 
    <form id="entryForm" onsubmit="FormSubmit(this)"> 
     Name:<br> 
     <input type="text" name="name"> 
     <br> 
     Client Name:<br> 
     <input type="text" name="clientname"> 
     <br><br> 
     <input type="submit" value="Submit"> 
     <input type="reset"> 
    </form> 
    </body> 
</html> 

Целью этой программы является, чтобы открыть боковую панель в листе Google, который отображает страницу HTML, который имеет form (tag). Затем, когда вы нажимаете кнопку submit на боковой панели html, она должна запускать функцию EnterData в Code.gs. Моя проблема в том, что эта функция не запускается, и ничего не происходит, когда я нажимаю кнопку отправки.

Любая помощь в этом была бы принята с благодарностью.

ответ

2

Попробуйте это:

entry.html

<!DOCTYPE html> 
<html> 
    <head> 
    <base target="_top"> 
    <script> 
     // Prevent form from submitting 
     function preventFormSubmit() { 
     var forms = document.querySelectorAll('form'); 
     for (var i = 0; i < forms.length; i++) { 
      forms[i].addEventListener('submit', function(event) { 
      event.preventDefault(); 
      }); 
     } 
     } 
     window.addEventListener('load', preventFormSubmit); 

     function FormSubmit() { 
     google.script.run.withSucessHandler(FormSuccess).EnterData(document.getElementById("entryForm")); 
     } 
     function FormSuccess() { 
     google.script.run.ProgramSuccess; 
     google.script.host.close(); 
     } 
    </script> 
    </head> 

    <body> 
    <form id="entryForm"> 
     Name:<br> 
     <input type="text" name="name"> 
     <br> 
     Client Name:<br> 
     <input type="text" name="clientname"> 
     <br><br> 
     <input type="submit" value="Submit" onclick="FormSubmit()"> 
     <input type="reset"> 
    </form> 
    </body> 
</html> 

Кроме того, я не понимаю, почему ты Проходя мимо "entryForm" объект в функции EnterData, потому что вы не» Кажется, он использует его.

+0

Я планировал использовать значения, которые пользователь вводит в форму следующим образом: 'range.setValue (fObject.name);' Я добавил в свои исправления, хотя и по-прежнему кажется, что я не могу заставить HTML вызвать серверные функции. –

+1

Вы сделали орфографическую ошибку в файле ** entry.html **. Это должно быть 'google.script.run.withSuccessHandler' вместо' google.script.run.withSucessHandler'. –

+0

О, ничего себе! Спасибо. Я думаю, вы можете прочитать свой код 10 раз и до сих пор не найти простейших, если ошибки –

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