質問したいこと
GASで作成したWebアプリケーションにformの入力値を渡すことができません。
原因をご存じの方いらっしゃいましたら、ご教授ください。
内容
Google Appsを使ったWebアプリケーションを作ろうと思い、GASのプロジェクトを作成しました。
入力フォームからのパラメータ付きデータを受信できるよう、GASのエディタを使って、
doGet(e){}
doPost(e){}
が記述されたgsファイルを作成。
続いて入力フォームのhtmlファイルを作成。
作成したファイルをデプロイして動かしてみたところ、doGet、doPostどちらも呼び出されているのですが、どうしても引数eに入力フォームに入力したデータを渡すことができません。
console.logでeの中身をみると、undefinedとなっています。
以下、症状です。コードは一番下に記載しています。
ブラウザからこのWebアプリケーションのurlにアクセスをすると、doGet(e)が実行され、index3.htmlの入力フォームが表示されます。
入力フォームにデータを入力し、submitボタンを押下すると、doPost(e)が実行され、response.htmlの値が返されます。
ところが、フォームに入力した入力値がeに渡されません。
console.log("post!")はきちんとconsole出力され、response.htmlも返されるのですが、
console.log(e)の結果表示は、"undefined"となってしまいます。
ちなみに、index3.htmlのformのmethod属性をmethod="get"ともしてみましたが、doGet(e)のeにも値を渡せません。
このときのブラウザのurlを確認すると、
https://script.google.com/macros/s/[ScriptID]/exec?text1=aaa&text2=bbb
となっており、フォームに入力した値をgetリクエストで正しく送信できているように見えます。
作成してデプロイしたファイルは、以下のとおりです。
よろしくお願いいたします。
=====コード.gs=====
function doGet(e) { console.log("get!"); console.log(e); return HtmlService.createTemplateFromFile("index3").evaluate(); } function doPost(e){ console.log("post!"); console.log(e); let html = HtmlService.createTemplateFromFile("response").evaluate(); return html }
=====index3.html=====
<!DOCTYPE html> <html> <head> <base target="_top"> </head> <body> <form method="post" action="https://script.google.com/macros/s/[ScriptID]/exec"> text1 <input type="text" name="text1"><br> text2 <input type="text" name="text2"><br> <input type="submit" value="ok"> </form> </body> </html>
=====response.html=====
<!DOCTYPE html> <html> <head> <base target="_top"> </head> <body> mission complete!! </body> </html>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。