選択する会議を日付と時間でグループ分けし配列(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]);
}
}
}

