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

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

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

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Q&A

解決済

1回答

3708閲覧

HTMLのセレクトボックスの値をGAS経由でスプレッドシートに入れられません

anomer

総合スコア55

Google Apps Script

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

0グッド

0クリップ

投稿2018/12/17 01:49

編集2018/12/17 01:53

ほかのサーバーにあるHTMLからセレクトボックス(ジャンル)を使ってGASの変数で受け取ることができないようで、undefinedがスプレッドシートに格納されてしまいます。(ほかの値はすべて正常に格納されています)
検索してもこのような方法を使っている方がいないのか情報がなく…お知恵をお貸しください。

HTML(UIkit使用)

html

1<form method="post" action="" class="uk-form-horizontal uk-margin-large" name="formName"> 2 <span class="uk-text-large">曲のリクエスト</span> 3 <div class="uk-margin"> 4 <label class="uk-form-label" for="request_insert">お名前</label> 5 <div class="uk-form-controls"> 6 <input class="uk-input" id="request_insert" type="text" size="30" maxlength="10" placeholder="お名前" name="request"> 7 </div> 8 </div> 9 <div class="uk-margin"> 10 <label class="uk-form-label" for="music_title_insert">曲名</label> 11 <div class="uk-form-controls"> 12 <input class="uk-input" id="music_title_insert" type="text" size="30" maxlength="20" placeholder="曲名" name="music_title"> 13 </div> 14 </div> 15 <div class="uk-margin"> 16 <label class="uk-form-label" for="artist_insert">歌手名</label> 17 <div class="uk-form-controls"> 18 <input class="uk-input" id="artist_insert" type="text" size="30" maxlength="20" placeholder="歌手名" name="artist"> 19 </div> 20 </div> 21 <div class="uk-margin"> 22 <label class="uk-form-label" for="genre_insert">ジャンル</label> 23 <div class="uk-form-controls"> 24 <select class="uk-select" name="genre" id="genre_insert"> 25 <option value="10">邦楽</option> 26 <option value="20">洋楽</option> 27 </select> 28 </div> 29 </div> 30 <div class="uk-margin"> 31 <label class="uk-form-label" for="related_insert">関連作品名</label> 32 <div class="uk-form-controls"> 33 <input class="uk-input" id="related_insert" type="text" size="30" maxlength="20" placeholder="作品名を入力"> 34 </div> 35 </div> 36 <div class="uk-text-left@s uk-text-right"><input type="submit" value="リクエストする" class="uk-button uk-button-primary"></div> 37</form>

GAS

google

1function doPost(e) { 2 var sheet = SpreadsheetApp.openById("").getSheetByName(""); 3 4 //データ取得 5 var request = e.parameter.request; 6 var music_title = e.parameter.music_title; 7 var artist = e.parameter.artist; 8 var genre = e.parameter.genre; 9 var related = e.parameter.related; 10 11 var dt = new Date(); 12 var y = dt.getFullYear(); 13 var m = ("00" + (dt.getMonth()+1)).slice(-2); 14 var d = ("00" + dt.getDate()).slice(-2); 15 var upd_date = y + m + d; 16 17 var last_row = sheet.getLastRow(); 18 sheet.getRange(last_row + 1, 1).setValue(last_row); 19 sheet.getRange(last_row + 1, 2).setValue(music_title); 20 sheet.getRange(last_row + 1, 3).setValue(artist); 21 sheet.getRange(last_row + 1, 4).setValue(genre); 22 sheet.getRange(last_row + 1, 4).setValue(related); 23 sheet.getRange(last_row + 1, 7).setValue(request); 24 sheet.getRange(last_row + 1, 8).setValue(0); 25 sheet.getRange(last_row + 1, 9).setValue(upd_date); 26 27 return HtmlService.createHtmlOutputFromFile("thanks"); 28}

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

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

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

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

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

papinianus

2018/12/17 02:02

このコードではD列にgenreとrelatedが書きこまれる(おそらく後勝ちでrelatedが入る)ように見えますが、sheet.getRange(last_row + 1, 4).setValue(related);の4は5か6の誤りではないですか?誤りでないとするとundefinedはrelatedの可能性もあります テスト的に、sheet.getRange(last_row + 1, 10).setValue(JSON.stringify(e.parameter));と追記して送信したものを質問に補足可能でしょうか?
anomer

2018/12/17 02:13

すみません。それが答えでしたので解決方法に同様の内容の記述をお願いします(ベストアンサーにさせていただきます) genreを入れる予定の場所に後勝ちでrelatedが入るソースになっていたのと、html側でrelatedにnameタグをつけ忘れていたことで値がないことになっていました。 どっちも直したところ、正常にセレクトボックスの選択値が入りました。 また、JSONで受け取った値を見る方法についてのご提案ありがとうございました。今後、とても参考になります…!
guest

回答1

0

ベストアンサー

  • 質疑欄より

質問のコードでは、このコードではD列にgenreとrelatedが書きこまれる(おそらく後勝ちでrelatedが入る)ようになっています(4列を2回指定)
sheet.getRange(last_row + 1, 4).setValue(related);456の誤りではないですか?
誤りでないとするとundefinedはrelatedの可能性もあります

ここまでのコピペだったら、BAもらう意味ないんでさらに助言

  • 提案

6列目(F列)が初期値として空白でいいなら、こう書くと同じバグは回避できます、という助言。

↓ここのブロック(空行と空行ではさまれたこの部分)を

javascript

1 var last_row = sheet.getLastRow(); 2 sheet.getRange(last_row + 1, 1).setValue(last_row); 3 sheet.getRange(last_row + 1, 2).setValue(music_title); 4 sheet.getRange(last_row + 1, 3).setValue(artist); 5 sheet.getRange(last_row + 1, 4).setValue(genre); 6 sheet.getRange(last_row + 1, 4).setValue(related); 7 sheet.getRange(last_row + 1, 7).setValue(request); 8 sheet.getRange(last_row + 1, 8).setValue(0); 9 sheet.getRange(last_row + 1, 9).setValue(upd_date);

↓こうします(すると同じ列に同じデータは入らない)。[]でくくって、,区切り

javascript

1 sheet.appendRow([last_row, music_title, artist, genre, related, "", request, 0, upd_date]); 2//万一relatedが6列ならこう 3//sheet.appendRow([last_row, music_title, artist, genre, "", related, request, 0, upd_date]);

投稿2018/12/17 02:44

papinianus

総合スコア12705

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

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

anomer

2018/12/17 02:55

append.rowの方法やってみます!本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問