回答編集履歴

1 余計な`Logger.log`を削除

alg

alg score 1909

2017/01/31 20:33  投稿

似たコードで試してみたところ、おっしゃるような状況が再現できました。
(初回の送信ボタン押下後は入力フォームが表示されるが、2回目の送信ボタン押下後は入力フォームが表示されない)
その理由は私にはちょっとわかりませんので、やり方を変えてみます。
#### 修正方針
1. `submit()`せず、insertInfo.gs側の`doPost(e)`を呼ぶにとどめる
2. `document.getElementById("kinoko").innerHTML = "登録完了しました";`で入力フォームが消えてしまうので、これは削除
3. 1.の修正によりページ遷移が発生しなくなったので、`doPost(e)`後に入力フォームを未入力状態に戻す
#### 修正後のコード
```javascript
// insertInfo.gs
//  doPostのみ抜粋
//  ★がついている行が変更箇所
function doPost(e) {
 Logger.log(e);  
 var number = String(e.number); //★
 Logger.log(number);
 var date = new Date();
 var ss = SpreadsheetApp.openById(gasheet);
 var sheet = ss.getSheetByName("DATA");
 var lastRow = sheet.getLastRow();
 sheet.getRange(lastRow+1, 1).setValue(number);
 sheet.getRange(lastRow+1, 2).setValue(date);
 //★ return doGet(); は削除
}
```
```html
<!DOCTYPE html>
<html>
 <head>
 <title>Google Spreadsheet書き込みテスト</title>
 <link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">
 <script type="text/javascript">
   function disp(){
     var str = document.forms.formman.number.value;
     if(str.match(/(\d{7})/)){
       if(window.confirm('送信しますか')){
         google.script.run.doPost(document.forms.formman); // ★submitではなくdoPost
         window.alert('登録完了しました');                // ★alertで完了通知
         document.forms.formman.number.focus();           // ★
         document.forms.formman.number.value = "";        // ★未入力状態に戻す
       }else{
         window.alert('キャンセルされました');
       }
     }else{
       window.alert("不備があります");
     }
   }
 </script>
 </head>
 <body>
 <center>
   <div id="kinoko">
     <form id="formman"> <!-- ★いろいろ削除 -->
       社員番号:<input type="text" size="18" maxlength="7" minlength="7" pattern="[0-9]*" id="number" name="number" placeholder="番号を入力してください" required>
       <p><input type="button" value="送信" onClick="disp()" class="action"></p>
       <p><input type="reset" value="リセット"></p>
     </form>
   </div>
 </center>
 </body>
</html>
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る