Google sheets 来自多名教师的考勤表

Google sheets 来自多名教师的考勤表,google-sheets,google-forms,Google Sheets,Google Forms,我是一名音乐学校的经理,我正面临着一个我试图用谷歌表单解决的问题 问题:由于当前系统非常繁重且难以操作,教师不填写考勤表。大多数老师年纪大了,不能很好地使用电脑但是-他们有智能手机 我想通过让他们填写一个简单的表格来解决这个问题(他们会通过电子邮件链接到这个表格,所以他们:打开邮件-点击链接,进入表格-填写-提交-瞧) 有12名教师,约150名学生。当然,每个老师只需要看他的学生 我试着用一个代码自动填充电子表格中的名字,在我把一个工作集从一个老师复制到另一个老师之前,它工作得很好。那时,新的表

我是一名音乐学校的经理,我正面临着一个我试图用谷歌表单解决的问题

问题:由于当前系统非常繁重且难以操作,教师不填写考勤表。大多数老师年纪大了,不能很好地使用电脑但是-他们有智能手机

我想通过让他们填写一个简单的表格来解决这个问题(他们会通过电子邮件链接到这个表格,所以他们:打开邮件-点击链接,进入表格-填写-提交-瞧)

有12名教师,约150名学生。当然,每个老师只需要看他的学生

我试着用一个代码自动填充电子表格中的名字,在我把一个工作集从一个老师复制到另一个老师之前,它工作得很好。那时,新的表格中出现了前一位老师的名字,而我似乎无法修复它

所需的解决方案-一个简单的表单,在多个复选框中显示教师所有学生的姓名,因此教师将选中每个向课堂展示的学生,然后提交。 所有信息都应该存储在同一个电子表格中,每个教师都有不同的选项卡

重要提示-课程是1对1-吉他、钢琴等。但是我不需要一个接一个地填写表格,老师可以一次填写一天中出现的所有学生,然后提交

任何帮助都将不胜感激


E

下面是一个简单的考勤记录示例

代码.gs

function onOpen()
{
  SpreadsheetApp.getUi().createMenu('My Tools')
    .addItem('Take Roll', 'getRollList')
    .addToUi();
}
出勤率

function getRollList()
{
  var ss=SpreadsheetApp.getActive();
  var sht=ss.getSheetByName('Roll');
  var rng=sht.getRange(1,1,sht.getLastRow(),4);
  var rngA=rng.getValues();
  var s='';
  for(var i=1;i<rngA.length;i++)
  {
    var dataA={};
    for(var j=0;j<4;j++){dataA[rngA[0][j]]=rngA[i][j];}//StudentID,Last,First,Middle
    s+='<div  id="' + dataA.StudentID + '" ><input type="checkbox" name="roll" value="' + dataA.StudentID + '" /><strong>' + dataA.StudentID + '</strong> - ' + dataA.Last + ', ' + dataA.First + dataA.Middle + '</div>';
  }
   s+='<br /><input type="button" value="Exit" onClick="google.script.host.close();" /><input type="button" value="Record Attendance" onClick="getCheckedBoxes(\'roll\');" />';
   s+='</body></html>';

   var html=HtmlService.createHtmlOutputFromFile('attendance').setWidth(400).setHeight(450);
   html.append(s);
   SpreadsheetApp.getUi().showModelessDialog(html, 'Attendance Sheet');
}

function recordAttendance(present)
{
  var ss=SpreadsheetApp.getActive();
  var sht=ss.getSheetByName('Roll');
  var rng=sht.getRange(1,1,sht.getLastRow(),sht.getLastColumn()+1);
  var rngA=rng.getValues();
  for(var i=0;i<rngA.length;i++)
  {
    if(i==0)
    {
      rngA[i][rngA[0].length-1]=Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "E MM/dd");
    }
    else
    {
      if(present.indexOf(rngA[i][0])>-1)
      {
        rngA[i][rngA[0].length-1]='X';
      }
      else
      {
        rngA[i][rngA[0].length-1]='0';
      }      
    }
  }
  rng.setValues(rngA);
  return true;
}

function displayMessage(msg)
{
  var output=HtmlService.createHtmlOutputFromFile('attendance')
  output.append(msg + '<br />' + 'Date: ' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "MM/dd/yyyy"));
  SpreadsheetApp.getUi().showModelessDialog(output, 'Attendance has been Recorded')
}
函数getRollList() { var ss=SpreadsheetApp.getActive(); var sht=ss.getSheetByName('Roll'); var rng=sht.getRange(1,1,sht.getLastRow(),4); var rngA=rng.getValues(); var s='';
对于(var i=1;iYou可以为此使用加载项。从您的谷歌表单中,您可以搜索加载项。也有专门为学校提供解决方案的小组。如果您真的想自己编写此程序,并且希望使用堆栈溢出作为资源,那么您需要了解在提问时需要了解的内容。一个好的问题包括一些c颂歌。
<!DOCTYPE html>
<html>
  <head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script>
function getCheckedBoxes(chkboxName) {
  var checkboxes=document.getElementsByName(chkboxName);
  var present = [];
  var absent=[];
  for (var i=0; i<checkboxes.length; i++) 
  {
     if (checkboxes[i].checked) 
     {
        present.push(checkboxes[i].value);
     }
  }
  google.script.run
    .withSuccessHandler(setResponse)
    .recordAttendance(present);
}

function setResponse()
{
  google.script.run.displayMessage('Attendance Recorded')
}
console.log('script here');
</script>
   </head>  
  <body>