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

URL Link //n.sfs.tw/15874

2022-06-21 11:11:05 By igogo

 

 

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

 

 

 

 

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

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

 

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

所以如果跑太久跑不完,  必須成兩次或三次跑

畢竟google apps script 是有名的慢

 

 

怎麼拆呢, 最外圍的

for (let j = 3; j < 182; j++)

表示從第三列開始到第182列是學生名單, 分成

for (let j = 3; j < 100; j++)  跑第一次

for (let j = 100; j < 182; j++)  跑第二次

有更多筆 或是要拆成三次, 依此類推

 

 

function main() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet1 = ss.getSheets()[0];
  let sheet2 = ss.getSheets()[1];

  for (let j = 3; j < 182; j++) {
    let st = sheet1.getRange(j, 5).getValue();
    let name = sheet1.getRange(j, 4).getValue();
    
    for (let i = 1; i < 100; i++) {
      let player = sheet2.getRange(i, 1).getValue();
      if (player == st) {
        let scores = sheet2.getRange(i, 2).getValue();
        // Logger.log(player + "," + name, "," + scores);
        sheet1.getRange(j,7).setValue(scores);
      }
    }

  }

}