Life is Like a Boat

忘備録や経済、投資、プログラミングに関するメモやtipsなど

GASからGoogleFormを使ってクイズを作る

仕事でGoogle Formsを使う機会が出てきました。 自分はGoogleのプラットフォームを使って仕事する機会が今までなかったのですが、Google Formsはかなり生産性高くアンケート作成やクイズ作成ができるので便利です。

ただ、大量に質問がある場合、ドラッグアンドドロップで質問を移動したり、選択肢の作成、クイズの場合は答えキーのセットなど手間がかかり面倒臭さが増してきます。マウスでぽちぽちやると気が遠くなりそうです。 そこでGoogleAppsScriptを使い自動生成する方法を調べてみました。

以下、Google Formのクイズを作成するGASスニペットです。ここではsetPoints(10)で1問10点のクイズを作っています。

const QUIZ_FOLDER_ID = 'YOUR_FOLDER_ID'

function myFunction() {
  addFormItems()
}

function addFormItems() {
  
  const formTitle = 'TestQuiz';
  const form = FormApp.create(formTitle).setIsQuiz(true)

  const item = form.addMultipleChoiceItem()
  
  item
  .setTitle('1+4')
  .setChoices([
    item.createChoice('1', false),
    item.createChoice('3', false),
    item.createChoice('5', true),
    item.createChoice('2', false),
  ]).setPoints(10).setRequired(true)
    
   
   const formFile = DriveApp.getFileById(form.getId())
   DriveApp.getFolderById(QUIZ_FOLDER_ID).addFile(formFile)
  
}

スクリプトのエディタから実行し、YOUR_FOLDER_IDのフォルダ下に生成されたクイズを確認すると、きちんと正答にチェックがついています!

f:id:nerimplo:20200909160413p:plain

FormApp.create(formTitle).setIsQuiz(true)をしないと点数つけられるクイズ形式のフォームにできないというのが一番の肝だと思います。

これをセットしてあげないと、Exception: 無効なフォーム データです。テストの設定を有効にしてから、もう一度お試しください。 というググラビリティの低い(苦笑 エラーが出てきます。

f:id:nerimplo:20200909160347p:plain