このサンプルでは、Google スプレッドシート に試験問題をリストし、そこから Google フォーム のテストを作成する方法をご紹介します。

以下のリンクからサンプルシートがコピー可能です。まずはサンプルで利用したい Google アカウント を選択し、スプレッドシート をコピーしてお使いください。

Google フォーム の操作サンプル ※スプレッドシートをコピーする Google アカウントが必要です

スプレッドシート をコピーしたら、適当な質問をリストし、以下のテスト作成ボタンをクリックしてください。その後 Google ドライブ を確認すると、テストのフォーム が作成されています。

<応用編>

それではここから一歩進んで、100題などの問題をスプレッドシート にリストしておき、その中から好きな数の問題数をランダムに抽出してフォーム を作成することをシミュレーションしたスプレッドシート を作成してみたいと思います。以下から別のサンプルをコピーしてください。

Google フォーム の操作サンプル – ランダム抽出対応 ※スプレッドシートをコピーする Google アカウントが必要です

先程はボタンにスクリプトを実行する機能を追加していましたが、メニューに追加する方法もあります。以下のスクリプトをコピーしてスプレッドシート についている Google Apps Script の コード.gs の先頭に貼り付けてみます。

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  var menu = ui.createMenu('テスト作成');
  menu.addItem('すべての問題でフォーム を作成', 'createForm1');
  menu.addItem('ランダムに問題選択', 'selectQuestions');
  menu.addItem('問題抽出シートからフォーム を作成', 'createForm2');
  menu.addToUi();
}

function createForm1(){
  ShtName = 'フォームテスト';
  CreateTestForm(ShtName);
}

function createForm2(){
  ShtName = '問題抽出シート';
  CreateTestForm(ShtName);
}

保存し、スプレッドシート のほうをリロード、もしくはファンクションの onOpen を選択して実行してみてください。これはシートが開かれたときに実行されるイベントハンドラ(何かのイベントで実行される機能)ファンクションです。

こちらはメニューバーにアイテムを追加するスクリプトです。以下のようにメニューが追加されたのがわかるかと思います。

・すべての問題でフォーム を作成:createForm1(すべての問題でフォーム を作成)

・ランダムに問題選択:selectQuestions (N2の黄色のカラムに入った数値分の問題を出現回数の低い順に選択して「問題抽出シート」に記述)

・問題選択からフォーム を作成: createForm1(「問題抽出シート」からフォーム を作成)

次に、「フォームの URL 」のタブには、作成されたフォーム のURL がアップデートされるように以下のコードを

Browser.msgBox(FormTitle+’の作成が完了しました。\\nフォームは Google Drive の『ドライブ』に存在します。’);

の直前に記入してみましょう。

 // フォーム作成完了表示
  var sht3 = SpreadsheetApp.getActive().getSheetByName("フォームのURL");
  
  sht3.getRange(1,2).setValue(Form.getPublishedUrl());
  sht3.getRange(2,2).setValue(Form.getEditUrl());

これでフォーム が作成された際、ドライブ にいかなくても、スプレッドシート の「フォーム のURL」のタブからURLのリンクがわかるようになりました。

完成したスクリプトのついたスプレッドシート はこちらです。

Google フォーム の操作サンプル ※スプレッドシートをコピーするGoogle アカウントが必要です