:::

9-2 google ClassRoom成績依班級名條整理

google CLassRoom 可以把成績複製到試算表,但只有姓名沒有座號,無法依班級座號排列,比較麻煩,所以寫了一個google 試算表小程式來幫忙。

一、取得檔案:

共用檔案:https://docs.google.com/spreadsheets/d/1iO28IzWw1N6WFA9FAopYwxktf_jfxKg10rR1U398gtY/edit?usp=sharing

建立副本,變成你自己的雲端檔案。

二 執行整理(第一次要設定權限)

在左方貼上班級名條,在 C1 欄位中貼上你取得 google ClassRoom 成績檔案的網址。

再按下整理鍵。 

會提醒未匹配的學生姓名及在原 ClassRoom 成績檔,已找到的,會呈現綠色底格。

 

取得授權說明

按下整理鍵(只有第一次需要取得執行權限),請依下方畫面,授權--進階--選帳號--前往(不安全)--允許。

 

程式說明

有需求者要自己修改建立者才需要看,工具--指令碼編輯器,貼入以下程式碼

function DoClassRoom_set() {
  var startRow=6 ;
  var classroom_col = 1 ;
  var max_sect =20 ;
  var max_students = 30 

  var realStart = 4 ;  
  var realNameCol = 2 ;
  var not_find_List = '' ;
  //目前工作表
  var sheet = SpreadsheetApp.getActiveSheet();

  //要讀入的 google ClassRoom 成績的網址
  var classRoomScoreUrl = sheet.getRange(1,3).getValue();
  var ss = SpreadsheetApp.openByUrl(classRoomScoreUrl);
  var ss_sheet = ss.getSheets()[0]; 



  //範圍清除
  sheet.getRange(2,5).setValue('');
  sheet.getRange(realStart-1,4,1,max_sect+1).setValue('');
  sheet.getRange(realStart,3,max_students,max_sect+1).setValue('');

  //取得各項成績名稱
  sheet.getRange(realStart-1,4, 1, max_sect ).setValues(ss_sheet.getRange(2,5,1,max_sect).getValues()) ;

  for(i=startRow ; i <= startRow + max_students ; i++ ){
    //classroom姓名
    var find_name = ss_sheet.getRange(i,classroom_col).getValue() + ss_sheet.getRange(i,classroom_col+1).getValue() ;
    if (find_name == '')  break ;

    find_fg = 0 ;
    //Logger.log(find_name) ;
    for (j = 3  ; j <= 3 + max_students ; j ++ ){

      var stud_point = sheet.getRange(j,realNameCol).getValue()
        //找到在名冊位置
        if (find_name == stud_point ) {

          sheet.getRange(j,realNameCol+1, 1, max_sect ).setValues(ss_sheet.getRange(i,classroom_col+3,1,max_sect).getValues()) ;
          find_fg = 1 ;
          //classRoom 檔出現綠色代表已找到
          ss_sheet.getRange(i,1).setBackground('green') ;
          break ;
        }
    }  
    if (find_fg == 0 )not_find_List = not_find_List + find_name + ' , ' ;
 

  }
  sheet.getRange(2,5).setValue('ClassRoom 無法比對的:' + not_find_List) ;

}


function DoClear() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var realStart = 4 ;  
  var max_sect =20 ;
  var max_students = 30 
  //範圍清除
  sheet.getRange(2,5).setValue('');
  sheet.getRange(realStart-1,4,1,max_sect+1).setValue('');
  sheet.getRange(realStart,3,max_students,max_sect+1).setValue('');
}

 


Google網站翻譯工具列

站內搜尋