[精讚] [會員登入]
602

利用google apps script 將Google sheet 中兩個工作表中的資料對應

如何整理google測驗收回來的學生資料

分享此文連結 //n.sfs.tw/15874

分享連結 利用google apps script 將Google sheet 中兩個工作表中的資料對應@igogo
(文章歡迎轉載,務必尊重版權註明連結來源)
2023-01-12 10:00:12 最後編修
2022-06-21 11:11:05 By igogo
 

 

 

利用google測驗收回來的學生資料兩百筆, 而且因為進行測驗時, 學生送出成績是隨機的, 要怎麼對應到我從校務系統下載的班級名單呢

 

 

 

 

底下為將工作表-名單中的學號與工作表-成績評量中的學號進行比對

只要找到成績中有答題者, 就把分數寫回名單中

 

這是個簡單但是很沒效率的方法, 如果兩個工作表各有100筆, 表示要比對100x100=10000次

所以如果跑太久跑不完,  必須成班級

畢竟google apps script 是有名的慢

本次學生數191人,  一次跑完約2分鐘

 

function main() {
  let spreadSheet = SpreadsheetApp.getActive();
  let nameSheet = spreadSheet.getSheetByName("名單");
  let examSheet = spreadSheet.getSheetByName("評量");
  let lastRow = nameSheet.getLastRow();
  let students = [];
  //收集學生名單
  for (let i = 2; i < lastRow + 1; i++) {
    let seat = nameSheet.getRange(i, 3, 1, 1).getValue().toString();

    if (seat.length == 1) {
      seat = '0' + seat;

    }

    let id = nameSheet.getRange(i, 1, 1, 1).getValue().toString() + nameSheet.getRange(i, 2, 1, 1).getValue().toString() + seat;
    let student = {};
    student.id = id;

    nameSheet.getRange(i, 5, 1, 1).setValue(id);

    students.push(student);
  }

  //取得學生分數
  lastRow = examSheet.getLastRow();
  for (let i = 2; i < lastRow + 1; i++) {
    id = examSheet.getRange(i, 2, 1, 1).getValue().toString();

    students.forEach(student => {
      if (student.id == id) {
        scores = examSheet.getRange(i, 1, 1, 1).getValue();
        student.scores = scores;
      }
    })


  }

  //寫入學生分數
  lastRow = nameSheet.getLastRow();
  for (let i = 2; i < lastRow + 1; i++) {
    id = nameSheet.getRange(i, 5, 1, 1).getValue().toString();
    students.forEach(student => {
       
       if(student.id == id){
         nameSheet.getRange(i, 6, 1, 1).setValue(student.scores);
       }

    })
  }


}

 

 

 

 

 

 

END

你可能感興趣的文章

[scratch] 將角色物件放到清單中,並依序讀出每個角色的X值 將角色物件放到清單中,並依序讀出每個角色的X值

台中市校園空氣品質預警 aqi

xlsx 資料不固定欄位如何讀取並儲存 xlsx 資料不固定欄位如何讀取並儲存 類型1 序號,競賽項目,學校,參賽者,指導教師,帳號,密碼 類型2 (多了隊員)

[scratch2] 分數排名 在清單中隨机產生5名學生的考試分數, 再利用另一個清單排名 想法, 分數愈高者排名愈好, 例如名次是第5名, 那分數是最

[scratch2] 巢狀迴圈 有兩清單 一數字 一英文 想排出所以可能, 例如1a,1b,1c,2a,2b,2c...3c 利用巢狀迴圈 內圈累加的變

利用google apps script 將Google sheet 中兩個工作表中的資料對應 如何整理google測驗收回來的學生資料

隨機好文

Google sheet 建立成績單的總分及排名並提供名字下拉查詢 Google sheet, sum, rank, pull down list

javascript 陣列 javascript 陣列可以放各种型別的元素 let data = [1,2,"john",tru

keycloak 透過java client lib新增user 使用keycloak-admin-client lib maven <dependency> <gro

spring boot 整合到 nginx 於subpath 將spring boot 位在docker中, 對外服務19090 程式佈署到nginx 伺服器的 subpath上 對