2016-07-21 6 views
0

私は自分のHtmlフォームをゼロから作成して、特定のスプレッドシートにリンクしています。 私は私が望んでいたとして、スプレッドシートにフォームデータを送信することに成功していますが、私は、フォームの送信ボタンを押すと、別のタブが現れ、私は、このエラーメッセージが表示されます:Google Appsコードは実行されていますが、「サポートされていない戻り値のタイプ」を示しています

完成したスクリプトが、値がサポートされていません返さ戻り値の型。

私のプログラムは私が望むように動作しますが、毎回このエラーメッセージが表示されます。

私はdoGetとdoPostを使用してスプレッドシートにデータを送信しています。ここで

は私のdoGetメソッドのコードです:ここで

function doGet(){ 
var html = HtmlService 
.createHtmlOutputFromFile('body') 
.setSandboxMode(HtmlService.SandboxMode.IFRAME); 
return html; 
} 

は私のdoPostメソッドのコードです:ここで

function doPost(e) { 
var ss = SpreadsheetApp.openById("id"); 
var Properties = PropertiesService.getScriptProperties(); 
var sheet = ss.getSheetByName("sheet1"); 
var uid = Properties.getProperty("uid"); 
var uid = Number(uid) + 1; 
var date = Utilities.formatDate(new Date(), "JST", "yyyy/MM/dd HH:mm:ss"); 

var array = [uid,date,e.parameter.pref,e.parameter.area,e.parameter.building]; 
sheet.appendRow(array); 
Properties.setProperty("uid",uid); 
} 

は、追加情報(HTMLとジャバスクリプト)である

HTMLコード:

<body> 
    <iframe src="#" id="frame" name="frame" style="width:0px; height:0px; border:0px;"> 
    </iframe> 
    <div class="center" id="main"> 
     <h3>Form Title</h3> 
     <form id="form" action="web app URL" method="post" target="frame" name="form"> 
     <div class="left"> 
     <p class="custom" align="left"> 
      Prefecture:<br> 
      <select name="pref" onChange="functionName1()" required> 
       <option selected>Choose...</option> 
       <option>Tokyo</option> 
       <option>Yamanashi</option> 
      </select><span class="required">*</span> 
     </p> 
     <p class="custom" align="left"> 
      Area:<br> 
      <select name="area" onChange="functionName2()" required> 
       <option>Choose...</option> 
      </select><span class="required">*</span> 
     </p> 
     <p class="custom" align="left"> 
      Building:<br> 
      <select name="building" required> 
       <option>Choose...</option> 
      </select><span class="required">*</span> 
     </p> 
     <p class="center"> 
      <input type="button" value="送信" class="btn" onClick="formsend()"> 
     </p> 
     </div> 
    </form> 
</div> 
<script type="text/javascript"> 

function formsend(){ 
    if(window.confirm("Are you sure to submit?")){ 
    document.getElementById("form").submit(); 
    document.getElementById("main").innerHTML = "<p><b><div style='color:red; font-size:16pt;'>Form sent.</div></b></p><input type='button' value='戻る' onClick='reload()'>"; 
    } 
    else{window.alert("Cancelled"); 
    } 
} 

function reload(){ 
    location.href = "Web App URL"; 
} 
</script> 
+0

可能性のある重複したサーバーと通信するための最良の方法は、私は例として、あなたのコードにいくつかの変更を加えgoogle.script.run APIことです[スクリプトは完了しましたが、返される値はサポートされていない戻り値の型ですか?](http://stackoverflow.com/questions/32927772/the-script-completed-but-the-returned-value-is-not-a-supported -return-type) –

+0

送信ボタンとフォームでHTMLを表示する必要があります。何かが新しいブラウザタブを開くようになっているようです。これにより、 'target'属性とあなたのHTMLにある可能性のあるURLまたはリンクについて不思議に思っています。 –

+0

あなたのリンクSujayをありがとう。私はこの質問を投稿する前にそれを試しました。それは私に別のエラーメッセージを表示することが判明した。とにかく、ありがとうございました。本当に感謝しています。 – kurtman

答えて

1

Sandy Goodは「ターゲット」属性を提案しています。

Google Appsのスクリプト::

function doGet(){ 
    var html = HtmlService 
    .createHtmlOutputFromFile('body') 
    .setSandboxMode(HtmlService.SandboxMode.IFRAME); 
return html; 
} 

function doSomething(e) { 
var ss = SpreadsheetApp.openById("id"); 
var Properties = PropertiesService.getScriptProperties(); 
var sheet = ss.getSheetByName("sheet1"); 
var uid = Properties.getProperty("uid"); 
var uid = Number(uid) + 1; 
var date = Utilities.formatDate(new Date(), "JST", "yyyy/MM/dd HH:mm:ss"); 

var array = [uid,date,e.pref,e.area,e.building]; 
sheet.appendRow(array); 
Properties.setProperty("uid",uid); 
} 

HTMLコード:の

<!DOCTYPE html> 
<html> 
    <head> 
    <base target="_top"> 
    </head> 
    <body> 
    <div class="center" id="main"> 
     <h3>Form Title</h3> 
     <form id="form" action="web app URL" name="form"> 
     <div class="left"> 
     <p class="custom" align="left"> 
      Prefecture:<br> 
      <select name="pref" onChange="functionName1()" required> 
       <option selected>Choose...</option> 
       <option>Tokyo</option> 
       <option>Yamanashi</option> 
      </select><span class="required">*</span> 
     </p> 
     <p class="custom" align="left"> 
      Area:<br> 
      <select name="area" onChange="functionName2()" required> 
       <option>Choose...</option> 
      </select><span class="required">*</span> 
     </p> 
     <p class="custom" align="left"> 
      Building:<br> 
      <select name="building" required> 
       <option>Choose...</option> 
      </select><span class="required">*</span> 
     </p> 
     <p class="center"> 
      <input type="button" value="送信" class="btn" onClick="formsend()"> 
     </p> 
     </div> 
    </form> 
</div> 
    </body> 
</html> 
<script type="text/javascript"> 

function formsend(){ 
    if(window.confirm("Are you sure to submit?")){ 
    google.script.run.doSomething(document.forms[0]); 
    document.getElementById("main").innerHTML = "<p><b><div style='color:red; font-size:16pt;'>Form sent.</div></b></p><input type='button' value='戻る' onClick='reload()'>"; 
    } 
    else{window.alert("Cancelled"); 
    } 
} 
</script> 
関連する問題