アカウント課金なしで使える1日5円の多機能メールフォームがリリース 簡単につくれて売り上げアップ

google script スプレッドシートからのフォーム作成~4

GAS 公式サンプルコードの理解Google Apps Script
この記事は約4分で読めます。

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

次のサンプルコード

タイトルとURLをコピーしました