我们公司几乎每周都会举办员工培训班。我正在努力构建一个 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;}
}
我不得不猜测其中的一些,因为你的问题中没有足够的信息来准确地弄清楚指定范围是什么。
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);
}