接續上一篇文章:將Google文件中的題目轉換成線上測驗的Google表單

將Google文件中的題目、答案和詳解,轉換成可評分的線上測

我要將在 Google 文件中的題目、標準答案、詳解,請 ChatGPT 產生 Google Apps Script 程式碼,可以自動轉成 Google 測驗表單,並設定答案和詳解

Google 文件內容(每一題的格式)如下,注意其網址中的 ID,稍後會用到。

將Google文件中的題目、答案和詳解,轉換成可評分的線上測

請 ChatGPT 產生 Google Apps Script 程式碼,提示詞:

每一題的範例改成如下:
1. 以下哪一項不是國家認同的基礎?
(A) 多元文化社會
(B) 多元公民身分保障
(C) 國家主權
(D) 公民參與
答案: (A) 多元文化社會
詳解: 多元公民身分保障是國家認同的基礎,而國家主權對內及對外都廣泛影響人民生活。公民參與也是民主社會的重要一環。多元文化社會雖然重要,但並未在資料來源中被提及為國家認同的基礎。

將這些程式碼改成可以將這10個題目、答案和詳解,自動轉成測驗用的Google表單,並且設定成測驗題,並且設定正確答案和解答。 其中,「答案:」之後為標準答案,「詳解:」之後為解析。

 

這一次在畫布介面下修正了3次錯誤,得到了正確的程式碼:

將Google文件中的題目、答案和詳解,轉換成可評分的線上測

執行程式碼所產生的 Google 測驗表單如下,已有題目和設定答案及詳解。

操作步驟可參考:將Google文件中的題目轉換成線上測驗的Google表單

將Google文件中的題目、答案和詳解,轉換成可評分的線上測

你只要稍加設定 Googel 表單,就可以讓使用者作答了。

將Google文件中的題目、答案和詳解,轉換成可評分的線上測

使用者測驗完,即可看到自己的測驗結果了!

將Google文件中的題目、答案和詳解,轉換成可評分的線上測

以下是本例的程式碼,供您利用:

// 1. 開啟您的 Google Apps Script 編輯器。
// 2. 創建一個新專案,並貼上以下程式碼。
// 3. 確保您有包含選擇題的 Google 文件,並在腳本中設置其檔案 ID。
// 4. 執行 createForm()。

function createForm() {
  // 替換為您的 Google 文件 ID
  const docId = "YOUR_DOCUMENT_ID";
  // 替換為您希望建立的 Google 表單名稱
  const formTitle = "自動生成的 Google 表單";

  // 開啟文件並取得內容
  const doc = DocumentApp.openById(docId);
  const body = doc.getBody();
  const text = body.getText();

  // 使用正則表達式解析文件中的題目、選項、答案與詳解
  const questionRegex = /\d+\.\s(.+?)\n\(A\)\s(.+?)\n\(B\)\s(.+?)\n\(C\)\s(.+?)\n\(D\)\s(.+?)\n答案:\s\((.)\)\s(.+?)\n詳解:\s(.+)/g;
  let match;

  // 建立 Google 表單
  const form = FormApp.create(formTitle);
  form.setIsQuiz(true); // 設定表單為測驗模式

  // 逐一匹配選擇題並新增到表單
  while ((match = questionRegex.exec(text)) !== null) {
    const question = match[1].trim();
    const optionA = match[2].trim();
    const optionB = match[3].trim();
    const optionC = match[4].trim();
    const optionD = match[5].trim();
    const correctAnswerLetter = match[6].trim();
    const correctAnswerText = match[7].trim();
    const explanation = match[8].trim();

    // 新增單選題到表單
    const item = form.addMultipleChoiceItem();
    const choices = [
      item.createChoice(optionA, correctAnswerLetter === 'A'),
      item.createChoice(optionB, correctAnswerLetter === 'B'),
      item.createChoice(optionC, correctAnswerLetter === 'C'),
      item.createChoice(optionD, correctAnswerLetter === 'D')
    ];
    item.setTitle(question)
      .setChoices(choices)
      .setPoints(1); // 設定分數

    // 添加正確和錯誤的回饋
    const correctFeedback = FormApp.createFeedback().setText("正確!\n詳解:" + explanation).build();
    const incorrectFeedback = FormApp.createFeedback().setText("錯誤!\n詳解:" + explanation).build();

    item.setFeedbackForCorrect(correctFeedback);
    item.setFeedbackForIncorrect(incorrectFeedback);
  }

  // 返回表單連結
  Logger.log("表單已建立: " + form.getEditUrl());
}
 

學不完.教不停.用不盡文章列表

arrow
arrow
    文章標籤
    ChatGPT Google測驗表單 AI
    全站熱搜
    創作者介紹
    創作者 vincent 的頭像
    vincent

    學不完.教不停.用不盡

    vincent 發表在 痞客邦 留言(0) 人氣()