前提・実現したいこと
GASのHTMLファイルで作成したFormからPostでデータをサーバ側に送り、gsファイルのプログラムで処理して、Thanks.htmlを表示させたい。
GASの仕様上別プロジェクトにしか遷移できないらしいが、できれば同プロジェクト内のhtml ファイルで賄えないかと考えている
発生している問題・エラーメッセージ
一旦jsファイルのfunctionを経由してgoogle.script.run.doPost(formObject);のような形で実行するが真っ白なページが別ページで表示される。
別の関数を用意して同じように実行すると動いたので、Post関数がうまくできていないと思われる。 引数eで受け取って、e.parameter.nameで取得指定いるつもりだが受け取れているかわからない。
エラーメッセージ
該当のソースコード
html
1 2<!DOCTYPE html> 3<html> 4 <head> 5 <base target="_top"> 6 <meta charset="utf-8"> 7 <meta viewport="width=device-width, initial-scale=1"> 8 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 9 <?!=HtmlService.createHtmlOutputFromFile('stylesheet').getContent(); ?> 10 <?var url = getScriptUrl();?> 11 </head> 12 13 <body> 14 <nav class="navbar"> 15 <div class="navbar-header"><a class="navbar-title" href="#">予約入力フォーム</a></div> 16 </nav> 17 18 <div class="container"> 19 <form class="form-horizontal" id="resev-form" method="post" target="_blank" 20 onsubmit="handleFormSubmit(this)"> 21 22略〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 23<div class="form-group"> 24 <div class="col-xs-offset-3 col-xs-9"> 25 <button id="send_button" type="submit" class="btn btn-primary btn-block"> 26 送信する 27 </button> 28 </div> 29 </div> 30 31 </form> 32 </div> 33 34 <?!= HtmlService.createHtmlOutputFromFile('js').getContent(); ?> 35 36 </body> 37</html> 38
gs
1function doGet(){ 2 3 var HtmlOutput = HtmlService.createTemplateFromFile('index').evaluate() 4 .setTitle('予約入力フォーム'); 5 return HtmlOutput; 6} 7 8function doPost(e){ 9 10 var sheet = SpreadsheetApp.openById("1DnEUVvmGsm4RXkUOuoFUqwpUV-uo0FxzSWnDdh74dhE").getSheetByName("sheet1"); 11 Logger.log(e); 12 var arrData=sheet.getDataRange().getValues(); 13 //データ取得 14 var company=e.parameter.company; 15 var name=e.parameter.name; 16 17 18 var HtmlOutput = HtmlService.createTemplateFromFile('thanks').evaluate(); 19 return HtmlOutput; 20} 21 22 23
js
1//submit 2function handleFormSubmit(formObject){ 3var ref= confirm("この内容で送信してもよろしいですか?") 4if(ref == true){ 5 google.script.run.doPost(formObject); 6 7}else{ 8return false;} 9} 10
試したこと
現在のURLにパラメータを追加してthanksy用のURLをdoGetで表示できるようにしてみたがURLを踏むと404エラーになり動かない。下記Javascriptのようにして実行。
window.open= ("<?var url = getScriptUrl();?>?page=thanks",'_blank');
別のプロジェクトのページに遷移するため、別プロジェクトに作ったthanksページのURLを取得してactionにURLを記載してみたが、送信後はまっしろなページとそのURLにパラメータとフォーム入力内容が載っていました。
補足情報
色々ネット上を調べてみたり試してみたのですが、ただの遷移はできたりしたのですが、Postに送ったあとに画面がちゃんと遷移しません。
どうやらログを見るとPostされたパラメータは
{oneday=1}のような形で送られてきていました。あとはPostの中から画面が遷移できれば良さそう。
わかりにくい説明かもしれませんが、回答お願いいたします。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/01 15:47