質問するログイン新規登録
Google Apps Script

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

1759閲覧

HTMLから送信した値がundefinedになってしまいます

_ak_

総合スコア0

Google Apps Script

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2022/09/21 20:41

0

0

前提

GAS(Google Apps Script)を使用して簡易的なサイトを作成している初心者です。
htmlからフォームをGAS側に送信(submit)した際に特定の値がundefinedで戻ってきてしまており、それの解決策を探しています。
※特定の値についてはこの後説明致します。

現状

//////サイトの流れを軽く記します//////
GASのURLを踏む(doGet起動)

URLから値を取り出し、html内の<?=testmessage ?>に埋め込む。
(URLから取り出した値は区別のため今後"値A"と呼びます)

JavaScript

1function doGet(e){ 2 const htmlOutput = HtmlService.createTemplateFromFile("index"); 3 htmlOutput.testmessage = e.parameter.row; 4 return htmlOutput.evaluate(); 5}

html

1<form class="" action="https://script.google.com/macros/s/・・・/exec" method="post"> 2 <div id="header"> 3  <h1>テスト</h1> 4  <span class="other">購入個数</span><br> 5  <textarea name="name" rows="1" cols="20"></textarea> 6 </div> 7 <h2><?=testmessage ?></h2> 8 <div class="form-submit"> 9  <input type="submit" name="" value="送信する"> 10 </div> 11</form>


htmlをHtmlOutputオブジェクトにしてreturn(ブラウザ表示へ)

ブラウザに表示後、入力フォームに入力された値と共に値Aを送信(GASに帰還)。

doPostで受け取り、"e.parameters.変数名"で値をそれぞれ抜き出す。
抜き出した値はスプレッドシートに書き込む。この際、値Aのみ"undefined"で戻ってきてしまう。
入力フォームの値はスプレッドシートに書き込めていることを確認済み。

まとめますと、「URL内に含まれた値をdoGetからhtmlを通ってdoPostまで持って行きたい」ということになります。

発生している問題

エラーが発生しているわけではないのですが、値を無事に持ち出すことが出来ていません。
途中のブラウザ表示の際は、値Aを表示することが出来ています。
URLから値を抜き出したい理由としては、URL内に内包した値(ID)を用いてスプレッドシートに入力フォームの値を入れたいからです。
シート内にIDが記載されていなかったら記載し、IDの右に入力フォームの値を入れる等。(下図参照)

ID
Yda1H8411
vRs54G3141

試したこと

調べ方が甘いのかもしれませんが、この問題を解決できそうなものは見つかりませんでした。

補足情報(FW/ツールのバージョンなど)

使用したのはGASです。

以上の問題を解決、もしくは代替案等の知識等がある方がいましたら、お教え頂けると幸いです。

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

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

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

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

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

YAmaGNZ

2022/09/22 00:52

値Aとやらはsubmitで送る対象になっているのでしょうか?
_ak_

2022/09/25 12:39

受け取るdoPost側では「e.parameters.testmessage;」で動いているので多分対象にはなってるものだと認識しています。 プログラムとしてエラーしていないので送られてるのかなぁと勝手に解釈してるので、もしかしたらこの考えが間違ってるのかもしれません。いろいろと未熟で申し訳ありません。
ouoyoueee

2022/09/28 00:45

doPost関数内で、e.postData.contentsを試してみましたか?
guest

回答1

0

HTML

1<h2><?=testmessage ?></h2>

この部分をpostでe.parameters.testmessageという形で受け取りたいということですか?
もしそうなのであればsubmitで送る対象にはなっていないはずです。
なので"undefined"になっています。

HTML

1<input type="hidden" name="名前" value="返したい値">

といった感じでやれば表示せずにpostで受け取れるかと思います。

投稿2022/09/25 13:19

YAmaGNZ

総合スコア10679

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問