将记录保存在数据库中的考勤表

问题描述 投票:0回答:1

我们公司几乎每周都会举办员工培训班。我正在努力构建一个 Google 表格,我们可以用它来跟踪这些课程的出勤情况。

此表的数据输入页面是动态的,因为当页面顶部的日期更改时,参加培训的员工列表也会更改。我想要完成的是将出勤记录复制到我的工作簿中存储它的单独页面。

我已经制定了将数据从列表中的名字复制到数据库页面的编码。我正在努力解决的问题是循环的编码,该循环将移动到列表中的下一条记录,并对第二、第三、第四等执行相同的操作。

我正在尝试在循环内创建一个循环 - 外部循环将向下移动出勤列表(var a) - 内部循环是将数据复制到数据表(var i)。

这是我尝试创建的示例版本:Master OBC Dashboard

function takeAttendance() {
  var myGooglSheet= SpreadsheetApp.getActiveSpreadsheet(); // Set 
variable for Google Sheet
var shUserForm= myGooglSheet.getSheetByName("Attendance"); //Set 
variable for Attendance Form
var datasheet = myGooglSheet.getSheetByName("Emp Data"); // Set 
variable for database
var classSize   = shUserForm.getRange("C4").getValue();  // Set 
variable for class size
let classRange  = shUserForm.getSheetValues(6,3,classSize,5); // 
Set range for class attendance data

for (var a = 6; a <= classRange.length+5; a++) //formula to 
advance through class roster
{
var Emp      = shUserForm.getRange(a,3).getValue(); //Set variable 
for Emp roster 
var values    = datasheet.getDataRange().getValues(); //getting the entire values from Emp Data range and assigning it to values variable

  for (var i = 0; i < values.length; i++) // formula to search Emp Data for Emp Name in first column

 {
   var rowValue = values[i]; // declaring the data row as a variable

   //checking the first value of the record is equal to search item
    if (rowValue[0] == ppAD) {

     var  iRow = i+1; //identify the row number
     console.log(iRow)

     datasheet.getRange(iRow, 1).setValue(shUserForm.getRange(a,3).getValue());     //ppAD Name
     datasheet.getRange(iRow, 22).setValue(shUserForm.getRange(a,4).getValue());    //Day 1
     datasheet.getRange(iRow, 23).setValue(shUserForm.getRange(a,5).getValue());    //Day 2
     datasheet.getRange(iRow, 24).setValue(shUserForm.getRange(a,6).getValue());    //Day 3
     datasheet.getRange(iRow, 25).setValue(shUserForm.getRange(a,7).getValue());    //Day 4

   valuesFound=true;
  return; //come out from the search function

  }

return;}

}
loops google-sheets google-apps-script
1个回答
0
投票

我不得不猜测其中的一些,因为你的问题中没有足够的信息来准确地弄清楚指定范围是什么。

function takeAttendance() {
  const ss = SpreadsheetApp.getActive();
  const ash = ss.getSheetByName("Attendance");
  const dsh = ss.getSheetByName("Emp Data");
  const classSize = ash.getRange("C4").getValue();
  let classRange = ash.getSheetValues(6, 3, classSize, 5);
  let vs = classRange.getValues();
  let data = vs.reduce((acc,[a,b,c,d,e],i) => {
    acc.col1.push([a]);
    acc.col22.push([b,c,d,e])
    return acc;
  },{col1:[],col22:[]})
  const sr = 1;//wherever you wish to start putting data in
  dsh.getRange(sr,1,data.col1.length).setValues(col1);
  dsh.getRange(sr,22,data.col22.length,4).setValues(col22);
}
© www.soinside.com 2019 - 2024. All rights reserved.