2017-02-05 13 views
1

まず、コードを提供し、私が達成しようとしていることを簡単に説明します。Google Apps Script HTMLフォームは送信されません

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> 
このプログラムの目的を有するHTMLページを表示するGoogleのシートにサイドバーを開くことである

フォーム(タグ)。次に、HTMLサイドバーでsubmitをクリックすると、Code.gsのEnterData関数が実行されます。私の問題は、この機能が実行されていないことと、送信ボタンをクリックしても何も起こらないということです。

この上の任意の助けいただければ幸いです。

答えて

2

これを試してください:あなたはEnterData機能に"entryForm"オブジェクトを渡しているなぜあなたはドンので

<!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> 

entry.htmlはまた、私は」理解していませんでしたそれを利用しているようだ。

+0

ユーザーがフォームに入力した値を次のように使用することを計画していました: 'range.setValue(fObject.name);'あなたの編集に追加しましたが、まだHTMLを呼び出すことができないようですサーバー側の機能 –

+1

** entry.html **ファイルでスペルミスをしました。これは、 'google.script.run.withSucessHandler'の代わりに' google.script.run.withSuccessHandler'でなければなりません。 –

+0

ああ、うわー!ありがとうございました。私はあなたがあなたのコードを10回読むことができ、間違いがあれば最も簡単なものを見つけることはできないと思っています。 –

関連する問題