質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

受付中

GASで作成したWebアプリケーションにformの入力値を渡すことができない

ogs_digilefe
ogs_digilefe

総合スコア0

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

2回答

0評価

0クリップ

2096閲覧

投稿2021/01/03 00:04

質問したいこと

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>

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。