選択する会議を日付と時間でグループ分けし配列(schedule)にする
会議を選択して申し込みができる会議参加確認フォームを作成する。
ss:アクティブなスプレッドシート
values:アクティブなスプレッドシート内のデーター内容
toLocaleDateString () 日付の文字列を返す 。
toLocaleDateString () 時間の文字列を返す 。
googleスプレッドシートのファイル>googleスプレッドシートの設定>全般タブの 言語と地域、タイムゾーンに依存する
指定の日付、時間にスケジュールがなければ、schedule配列に追加(push)する。
if (!schedule[day]) { schedule[day] = {}; } if (!schedule[day][time]) { schedule[day][time] = []; } schedule[day][time].push(session[0]); }
schedule配列に基づいてフォームを作成する サンプルコード
form.addMultipleChoiceItem(): 参加日する日付を選択するラジオボタンを作成。
setChoiceValues:ラジオボタンに日付と時間のラベルをつける。
/** * Creates a Google Form that allows respondents to select which conference * sessions they would like to attend, grouped by date and start time. * * @param {Spreadsheet} ss The spreadsheet that contains the conference data. * @param {Array<String[]>} values Cell values for the spreadsheet range. */ function setUpForm_(ss, values) { // Group the sessions by date and time so that they can be passed to the form. var schedule = {}; for (var i = 1; i < values.length; i++) { var session = values[i]; var day = session[1].toLocaleDateString(); var time = session[2].toLocaleTimeString(); if (!schedule[day]) { schedule[day] = {}; } if (!schedule[day][time]) { schedule[day][time] = []; } schedule[day][time].push(session[0]); } // Create the form and add a multiple-choice question for each timeslot. var form = FormApp.create('Conference Form'); form.setDestination(FormApp.DestinationType.SPREADSHEET, ss.getId()); form.addTextItem().setTitle('Name').setRequired(true); form.addTextItem().setTitle('Email').setRequired(true); for (var day in schedule) { var header = form.addSectionHeaderItem().setTitle('Sessions for ' + day); for (var time in schedule[day]) { var item = form.addMultipleChoiceItem().setTitle(time + ' ' + day) .setChoiceValues(schedule[day][time]); } } }