[精讚] [會員登入]
748

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

你可能感興趣的文章

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

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

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

2018 hoc 掃地機器人 掃地機器人只能打掃沒有障礙物(桌椅、牆壁)的範圍,請寫程式控制機器人打掃餐廳的所有走道, 並在清掃完畢後回到充電器。

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

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

隨機好文

proxmox lxc 救援 今天突然接到一名強者我朋友的臨時求援 他說他把pve 從5.1升到5.2後, kvm的虛擬机器都沒問題 , 但是lxc的

Arrays.asList 後想再add出現 UnsupportedOperationException 這個問題真是搞死我了 List<String> fruits = Arrays.asList("a

ArrayList 想移除特定值 想移出water, 使用lambda 的方式如下 List<String> fruits = new Arr

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

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