[精讚] [會員登入]
402

利用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

你可能感興趣的文章

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

2018 hoc 頒獎 校慶到了,啦啦隊比賽如火如荼展開,學務主任將頒發獎狀給表現優異的班級。請完成以下程式碼,讓程式將啦啦隊表演成績由高至低依序輸出。

scratch 不重覆隨機取陣列值 隨機取數是在設計遊戲時, 很常用到的技巧 最簡單的就是使用運算積木裡的隨機取數範圍 但是, 如果我是想全部取出且不重覆,

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

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

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

隨機好文

hoc2018灑水機器人 灑水機器人的工作是替行道樹灑水,機器人的灑水範圍有限(左前方、左方、左後方),請寫程式控制機器 人判斷須灑水的狀況。每顆

Spring Boot Maven wrappers maven, mvnw, build command

spring boot 使用jdbc連接mariadb spring boot, mariadb, jdbc, rowmapper

學習帳號不在籍處理 雲端校務系統中學生異動可能是因轉學造成短期空檔不在籍 所以在判斷停用後, 時間註記在 syncAccount.getDa

關閉chrome不小心按到的訂閱通知 https://support.google.com/chrome/answer/3220216?hl=zh-Hant&