第九節課:創建完整的 AI 命題系統

暖身問題: 你是否想過自己能設計一個完整的命題系統,從生成到儲存,並展示結果?今天,我們將整合前幾課的內容,打造一個功能完整的系統。

教學目標

教學內容與操作步驟

1. 綜合生成與儲存功能


const GEMINI_API_KEY = '你的API密鑰';

function generateAndSaveQuiz() {
    const apiUrl = 'https://generativelanguage.googleapis.com/v1/models/gemini-pro:generateContent?key=' + GEMINI_API_KEY;
    const payload = {
        "prompt": "請生成一個關於基礎數學的選擇題,包括問題、四個選項及正確答案。"
    };
    const options = {
        "method": "post",
        "contentType": "application/json",
        "payload": JSON.stringify(payload)
    };

    const response = UrlFetchApp.fetch(apiUrl, options);
    const data = JSON.parse(response.getContentText());
    const question = JSON.parse(data.candidates[0].content);

    const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    sheet.appendRow([
        question.question,
        ...question.options,
        question.answer
    ]);

    Logger.log("題目已生成並儲存到試算表");
}

        

步驟:

  1. 將上述程式碼複製到 Apps Script 編輯器中。
  2. 執行程式,檢查試算表中是否儲存了生成的題目。
問題:如果希望生成題目時自動附加解釋,應該如何修改程式碼?

2. 展示已儲存的題目


function displayQuizzes() {
    const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    const data = sheet.getDataRange().getValues();
    let quizzes = [];

    for (let i = 1; i < data.length; i++) {
        quizzes.push({
            question: data[i][0],
            options: data[i].slice(1, 5),
            answer: data[i][5]
        });
    }

    Logger.log(JSON.stringify(quizzes, null, 2));
    return quizzes;
}

        

步驟:

  1. 將程式碼添加到 Apps Script 編輯器中。
  2. 執行程式,檢查日誌中是否正確顯示試算表內的所有題目。
問題:如果試算表中有 10 個題目,如何修改程式僅顯示前 5 個?

課程延伸與挑戰

上一節課下一節課