ほかのサーバーにある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
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}
このコードでは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));と追記して送信したものを質問に補足可能でしょうか?
すみません。それが答えでしたので解決方法に同様の内容の記述をお願いします(ベストアンサーにさせていただきます)
genreを入れる予定の場所に後勝ちでrelatedが入るソースになっていたのと、html側でrelatedにnameタグをつけ忘れていたことで値がないことになっていました。
どっちも直したところ、正常にセレクトボックスの選択値が入りました。
また、JSONで受け取った値を見る方法についてのご提案ありがとうございました。今後、とても参考になります…!
回答1件
あなたの回答
tips
プレビュー