[精讚] [會員登入]
181

利用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 利用巢狀迴圈 內圈累加的變

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

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

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

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

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

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

[vue.js] input event Form-Input-Components-using-Custom-Events

axios vuejs application/x-www-form-urlencoded 送資料 VUE.JS 以 application/x-www-form-urlencoded 送資料

在docker裡跑spring boot+mongo(一) 系統安裝docker ce centos7 + docker ce https://docs.docker.com/in

將google試算表當作簡易資料庫,利用Google apps cript 在網頁上操作查詢 將google試算表當作簡易資料庫,利用apps cript 在網頁上操作查詢 若我有一試算表資料 縣市 status

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