คู่มือเริ่มต้นฉบับย่อ: ตรวจสอบการเข้าร่วมของนักเรียนในหลักสูตร Google Meet

ทําตามขั้นตอนในหน้านี้เพื่อสร้างส่วนเสริม Google ชีตที่ติดตามการเข้าร่วมหลักสูตรของ Google Classroom ที่ส่งโดยใช้การประชุมของ Google Meet ภาพต่อไปนี้แสดงหลักสูตรที่มีการบันทึกว่าได้เข้าร่วม

ตั้งค่า

ทําตามขั้นตอนต่อไปนี้เพื่อตั้งค่าการเริ่มต้นใช้งานอย่างรวดเร็วนี้

  1. สร้าง Google ชีตใหม่
  2. จากภายในชีตใหม่ ให้เลือกรายการในเมนู ส่วนขยาย > Apps Script หากเห็นหน้าจอต้อนรับ ให้คลิกโปรเจ็กต์ว่าง
  3. ลบโค้ดในโปรแกรมแก้ไขสคริปต์
  4. คลิกที่ "โครงการที่ไม่มีชื่อ" ชื่อโครงการ และเปลี่ยนชื่อเป็น "การเข้าร่วม&&tt;
  5. คลิกทรัพยากร > บริการขั้นสูงของ Google
  6. ในกล่องโต้ตอบที่ปรากฏขึ้น ให้ค้นหาและคลิกสวิตช์เปิด/ปิดสําหรับ Google Classroom API และ Admin Reports API
  7. คลิกลูกศรลงทางด้านขวาของชื่อไฟล์ Code.js
  8. เลือกเปลี่ยนชื่อ
  9. เปลี่ยนชื่อไฟล์เป็น "Attendance."
  10. คัดลอกและวางโค้ดต่อไปนี้ลงในโปรแกรมแก้ไขสคริปต์
/* Menu Options */
function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Options')
      .addItem("Import Last 5 Courses", 'importCourses')
      .addItem('Check Attendance on Current Sheet', 'checkAll')
      .addToUi();
}

/*
  Description: Option for teachers to import their
  most 5 recently created courses
*/
function importCourses() {
  var optionalArgs = {
    teacherId: 'me',
    courseStates: 'ACTIVE'
  };
  var response = Classroom.Courses.list(optionalArgs);
  var courses = response.courses
  for (var i = 0; i < courses.length; i++) {
    var courseName = courses[i].name
    var courseId = courses[i].id
    insertCourse(courseName, courseId)
  }
}

/*
  Description: Create the Sheet for Course
  @param {String} courseName - Name of Course
  @param {String} courseId - Corresponding Classroom ID
*/
function insertCourse(courseName, courseId) {
    var spreadsheetName = courseName + "(" + courseId + ")"
    var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
    var yourNewSheet = activeSpreadsheet.getSheetByName(spreadsheetName);

    if (yourNewSheet != null) {
        return
    }
    yourNewSheet = activeSpreadsheet.insertSheet();
    yourNewSheet.setName(spreadsheetName);
    yourNewSheet.appendRow(['Student Name', 'Email Address', 'Replace with Meet Code'])
    yourNewSheet.setFrozenRows(1)
    var studentNames = getRoster(courseId)["studentNames"]
    var studentEmails = getRoster(courseId)["studentEmails"]
    for (var i = 0; i < studentNames.length; i++) {
      yourNewSheet.appendRow([studentNames[i],studentEmails[i]])
    }
    yourNewSheet.autoResizeColumns(1, 2)
    yourNewSheet.setFrozenColumns(2)
  }

/*
  Description: Adds the course's students to the course sheet
  @param {String} courseId - Corresponding Classroom ID
*/
function getRoster(courseId) {
  var studentNames = []
  var studentEmails = []
  var optionalArgs = {
      pageSize: 100
  };
  var response = Classroom.Courses.Students.list(courseId, optionalArgs)
  var students = response.students

  for (var i = 0; i <= students.length; i++) {
    try {
      studentNames.push(students[i].profile.name.fullName)
      studentEmails.push(students[i].profile.emailAddress)
    } catch (err) {
       return { "studentNames":studentNames, "studentEmails":studentEmails }
   }
 }
}

/*
  Description: Retrieves the Meet code from the Course Sheet
  and uses helper function to check attendance
*/
function checkAll() {
  var ss = SpreadsheetApp.getActiveSheet();
  var sheet = ss.getDataRange().getValues();
  for (var i = 2; i < sheet.length * 100; i++){
    var meetCode = getCleanCode(sheet[0][i])
    // No Meet code given
    if (meetCode == null) {
      break;
    }
    else {
      // check whether each student was present in Meet
      checkMeet(meetCode, i+1);
    }
  }
}

/*
  Description: Checks the Meet for attendance of the given student
  @param {String} meetCode - Raw Meet Code from Course Sheet
  @param {Integer} index - Index corresponding to the Student's row
  in the Course Sheet
*/
function checkMeet(meetCode, index) {
  // universal settings - static
  var userKey = 'all';
  var applicationName = 'meet';
  var ss = SpreadsheetApp.getActiveSheet();
  var sheet = ss.getDataRange().getValues();
  for (var i = 0; i < sheet.length-1; i++) {
    var emailAddress = sheet[i+1][1]
    var optionalArgs = {
      event_name: "call_ended",
      filters: "identifier==" + emailAddress + ",meeting_code==" + meetCode
    };
    try {
      var response = AdminReports.Activities.list(userKey, applicationName, optionalArgs);
      var activities = response.items;
      if (activities == null) {
        markAbsent(ss,i+2,index)
      }
      else {
        markPresent(ss,i+2,index)
      }
    } catch (err) {
        continue
     }
  }
}

/*
  Description: Strips any "-' Characters to match needed format
  for Reports API
  @param {String} meetCode - Raw Meet Code from Course Sheet
*/
function getCleanCode(meetCode) {
  try{
    return meetCode.replace("/-/g","")
  } catch (err) { return meetCode; }
}

/*
  Description: Marks the student as absent for their corresponding cell
  @param {Object} sheet - Course Sheet object
  @param {Integer} i - Index of Sheet cell column to be filled
  @param {Integer} j - Index of Sheet cell row to be filled
*/
function markAbsent(sheet, i, j) {
    var cell = sheet.getRange(i, j);
    cell.setValue("Absent");
}

/*
  Description: Marks the student as absent for their corresponding cell
  @param {Object} sheet - Course Sheet object
  @param {Integer} i - Index of Sheet cell column to be filled
  @param {Integer} j - Index of Sheet cell row to be filled
*/
function markPresent(sheet, i, j) {
    var cell = sheet.getRange(i, j);
    cell.setValue("Present");
}
  1. เลือกไฟล์และระเบียน บันทึกทั้งหมด

ลองใช้งาน

ลองทําตามขั้นตอนต่อไปนี้เพื่อเริ่มใช้งานอย่างรวดเร็ว

  1. เปลี่ยนกลับสเปรดชีตแล้วโหลดหน้าเว็บอีกครั้ง เมนูตัวเลือกจะปรากฏในแถบเมนู
  2. คลิกตัวเลือก > นําเข้า 5 หลักสูตรล่าสุด กล่องโต้ตอบจะปรากฏขึ้นเพื่อ ระบุว่าสคริปต์ต้องได้รับสิทธิ์
  3. คลิกต่อไป กล่องโต้ตอบที่ 2 จะขอสิทธิ์สําหรับบริการบางอย่างของ Google คลิกอนุญาต ตอนนี้สเปรดชีตจะมีแท็บอยู่ด้านล่าง แต่ละหลักสูตรจะมีรายชื่อผู้เข้าร่วมหลักสูตรในคอลัมน์แรกและรหัส Google Meet ในแถวบนสุด
  4. คลิกที่แผ่นงานของหลักสูตร 1 แผ่น
  5. คลิกตัวเลือก > ตรวจสอบการเข้าร่วมในชีตปัจจุบัน ระบบจะป้อนการเข้าร่วม สําหรับรหัส Google Meet ของหลักสูตรปัจจุบัน
  6. ทําขั้นตอนที่ 4 และ 5 ซ้ําสําหรับชั้นเรียนอื่นๆ อีก 4 ชั้นเรียน

เผยแพร่

เนื่องจากนี่คือตัวอย่างส่วนเสริม บทแนะนําของเราจึงจะจบลงที่นี่ หากคุณพัฒนาส่วนเสริมจริง ขั้นตอนสุดท้ายคือการเผยแพร่เพื่อให้ผู้ใช้รายอื่นค้นหาและติดตั้งได้

สร้างแอปการเข้าร่วมด้วยภาษาอื่น

นอกจากนี้ คุณยังสร้างแอปการเข้าร่วมหรือเพิ่มฟังก์ชันการเข้าร่วมลงในแอปการเรียนรู้ทางไกลที่มีอยู่ได้โดยใช้ REST API หรือไลบรารีที่เกี่ยวข้อง

API ของ REST ที่ใช้ในการเริ่มต้นอย่างรวดเร็วนี้คือ

ชื่อเมธอดในการเริ่มต้นอย่างรวดเร็วนี้เหมือนกับใน REST API เหล่านี้ ตัวอย่างเช่น AdminReports.Activities.list สอดคล้องกับ Activities.list ใน Google Reports API

ดูข้อมูลเพิ่มเติม

หากต้องการเรียนรู้วิธีขยาย Google ชีตด้วย Apps Script ต่อไป โปรดดูแหล่งข้อมูลต่อไปนี้