実現したいこと
GAS HTML でフォームを作成したが、チェックボックスのみ
選択した値が帰ってこない
発生している問題・エラーメッセージ
TypeError: Cannot read properties of undefined (reading 'join')
at processForm(コード:21:30)
→sheet.appendRow([[formData.name, formData.gender,formData.email,formData.animal.join(','),formData.option]]);
該当のソースコード
index.html側
<!DOCTYPE html> <html> <head> <meta charset = "tuf-8"> <title>HTMLのお勉強</title> <base target="_top"> <?!= HtmlService.createHtmlOutputFromFile('css').getContent(); ?> </head> <body></select><h1>入力フォーム</h1> <form id="Form"> <label for="name">名前:</label><br> <input type="text" id="name" name="name"><br> <label for="email">メールアドレス:</label><br> <input type="email" id="email" name="email"><br> <label for="gender">性別:</label><br> <input type="radio" id="gender_man" name="gender" value="男性">男性 <input type="radio" id="gender_women" name="gender" value="女性">女性<br> <label for="animal">チェックボックス:</label><br> <input type="checkbox" name="animal[]" value="犬">いぬ <input type="checkbox" name="animal[]" value="猫">ねこ <input type="checkbox" name="animal[]" value="うさぎ">うさぎ<br> <label for="option">プルダウン:</label><br> <select name="option"> <option value="option1">オプション1</option> <option value="option2">オプション2</option> <option value="option3">オプション3</option><br>
</body> </html><input type="button" value="送信" onclick="submitForm()"> </form> <script> function submitForm() { google.script.run.processForm(document.getElementById("Form")); document.getElementById("Form").reset(); } </script>
GAS側
const mysh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
function doGet(e) {
const template = HtmlService.createTemplateFromFile('index');
return template.evaluate();
}
function processForm(formData) {
Logger.log(formData.animal.join(','))
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
sheet.appendRow([[formData.name, formData.gender,formData.email,formData.animal.join(','),formData.option]]);
}
上記で実行すると スプレッドシートには
チェックボックスだけ値が帰ってこない
GASの実行エラーでは
sheet.appendRow([[formData.name, formData.gender,formData.email,formData.animal.join(','),formData.option]]);
のところがエラーになる