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

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

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

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

Q&A

2回答

3805閲覧

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

ogs_digilefe

総合スコア0

Google Apps Script

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

0グッド

0クリップ

投稿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>

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

console.log(e)の結果表示は、"undefined"となってしまいます。

e.parameter の配下ならともかく e 自体が undefined になっているのは変ですね。
コードを編集・保存してから「新しいデプロイ」をしても同様でしょうか。

投稿2021/01/13 14:15

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

フォーム内はdopostで
webパラメータで直たたきしたいならdoget

ここに動作サンプルがあるので参考になるかと
https://mashe.hawksey.info/2014/07/google-sheets-as-a-database-insert-with-apps-script-using-postget-methods-with-ajax-example/

https://officeforest.org/wp/2018/11/28/google-apps-script%E3%81%A7get%E3%83%BBpost/

//gas
doPost(e)
var dat=e.parameter["name"]);

投稿2021/01/03 22:21

monkeydoive

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問