彰化一整天的論壇

 找回密碼
 立即註冊
查看: 314|回復: 3

【Google表單教學】自動選擇題題庫產生器 (可選範圍+答案...

[複製鏈接]
發表於 2021-3-5 18:28:33 | 顯示全部樓層 |閱讀模式
本帖最後由 imingho 於 2021-3-15 13:35 編輯

自動選擇題題庫產生器 (可選範圍+答案類型+讀入工作表)

這是第三次改版,有老師反應之前有題號的題目,若有若變成亂數出題會很奇怪,這個版本就加入可以選題號出不出現,還有現在很多考試的選項是ABCD,也在這版加入,還之之前要手動加工作表的,也把它變成自動化。

quiz_bestdaylong.jpg

  1. function onOpen() {
  2.   //update
  3.   /*
  4.   彰化一整天的blog: http://blog.bestdaylong.com
  5.   彰化一整天的論壇: http://discuz.bestdaylong.com
  6.   
  7.   影音教學: https://odysee.com/@imingho:7/google-29:9?r=EMBEfibs8e67r5TQGkPwpY5HFYPK3tnB

  8.   作者:蔡明和
  9.   電子郵件:imingho@gmail.com
  10.   
  11.     v3.0 2021.03.05  第三版
  12.   
  13.   */
  14.   
  15.   var ss = SpreadsheetApp.getActiveSpreadsheet();

  16.   // These are the 2 menu entries
  17.   var menuEntries = [
  18.     {name: "自動產生選擇題題庫", functionName: "bestdaylong_auto_google_form_quiz"},

  19.     ];

  20.   // After defining the menu entries, then you define the menu itself
  21.   ss.addMenu("彰化一整天Blog工具", menuEntries);
  22.   
  23. }
  24. function bestdaylong_auto_google_form_quiz() {
  25.   //自動產生Google表單試題 by 彰化一整天blog
  26.   
  27.   //程式碼及討論 http://discuz.bestdaylong.com/thread-39217-1-1.html
  28.   
  29.   //影音教學: https://youtu.be/9JTlNvRP-5w
  30.   
  31.   //儲存格格式 編號        題目        答案        選項1        選項2        選項3        選項4
  32.   
  33.   var sheet=SpreadsheetApp.getActiveSheet();  //取得目前工作表

  34.   var exam = sheet.getRange("B1").getValue().toString(); //題庫工作表

  35.   var examSheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(exam);
  36.   
  37.   var examname = sheet.getRange("B2").getValue().toString(); //考卷名稱

  38.   var form = FormApp.create(examname);
  39.   
  40.   
  41.   form.setIsQuiz(true);  //設定表單為考試

  42.   var m=examSheet.getLastColumn();//取得欄數
  43.   var n=sheet.getRange("B6").getValue();//取得筆數
  44.   var i,j;//迴圈變數   

  45.   var min,max;
  46.   var min=sheet.getRange("B4").getValue();
  47.   var max=sheet.getRange("B5").getValue();

  48.   var examType=sheet.getRange("B3").getValue();

  49.   var showExamNo=sheet.getRange("B7").getValue();  //是否顯示原題號

  50.   var showNo=sheet.getRange("B8").getValue();  //是否顯示題號

  51.   var QuestionType=sheet.getRange("B9").getValue();  //答案類型
  52.   
  53.   var score=100/n;  //計算每題分數
  54.   
  55.   var answer;//正確答案

  56.   var question_no=[];

  57.   question_no=get_rand(min,max,n);

  58.   var data;

  59.   
  60.   
  61.   var exam_no;//取得題號
  62.   
  63.   var item;

  64.   for(i=0;i<n;i++){   //從第0筆開始讀取  
  65.     //var item = form.addListItem();//下拉選單
  66.     exam_no=question_no[i]+1;//轉換成第幾列
  67.     if(examType=="選擇題")
  68.       item = form.addMultipleChoiceItem();//選擇題
  69.     else
  70.       item = form.addListItem();//下拉式選單

  71.     var data="";
  72.     if(showNo=="是")
  73.     {
  74.         data=(i+1)+'.';

  75.     }
  76.     data+=examSheet.getRange(exam_no,2).getValue();
  77.     if(showExamNo=="是")
  78.       data+=',原題號('+examSheet.getRange(exam_no,1).getValue()+')';
  79.       
  80.     answer=examSheet.getRange(exam_no,3).getValue();
  81.     item.setTitle(data);
  82.     var answers=[];//設定答案選項
  83.     for(j=4;j<=m;j++){  //從第4欄往右讀取
  84.       switch(QuestionType)
  85.       {
  86.       case "數字1.2.3.4.":
  87.         data=(j-3)+'.';
  88.         break;
  89.       case "數字(1)(2)(3)(4)":
  90.         data="("+(j-3)+')';
  91.         break;
  92.       case "英文(A)(B)(C)(D)":
  93.         data="("+String.fromCharCode(j-3+64)+')';
  94.         break;   
  95.       case "英文A.B.C.D.":   
  96.         data=String.fromCharCode(j-3+64)+'.';
  97.         break;
複製代碼






回復

使用道具 舉報

發表於 2021-3-14 19:02:21 | 顯示全部樓層
非常感謝分享的程式碼,很好用:
第88行:item = form.addListItem;//下拉式選單
少了()    item = form.addListItem();//下拉式選單
,選擇題如不顯示選項題號,可以設定成選項隨機嗎,這樣作答時比較不會互抄答案。

選擇題題型右下角,必填旁邊的三個小點,點下後有可以選擇,隨機決定選項順序─的選項
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2021-3-15 10:20:08 | 顯示全部樓層
本帖最後由 imingho 於 2021-3-15 13:36 編輯
1ping 發表於 2021-3-14 19:02
非常感謝分享的程式碼,很好用:
第88行:item = form.addListItem;//下拉式選單
少了()    item = form.ad ...

感謝告知,關於選項亂數這件事,它的程式碼並沒有提供相關的指令,目前只能手動去設定。還有我在答案選項中已加入[無任何提示]的選項方便您做相關的設定。
google_item_01.jpg


回復 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

Archiver|手機版|小黑屋|彰化一整天的論壇(Excel,Office)

GMT+8, 2021-4-11 03:04 , Processed in 0.113870 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回復 返回頂部 返回列表