将电子表格回复重新格式化为表单提交上的新选项卡

时间:2016-10-05 02:50:57

标签: forms google-apps-script

以下是表单中的电子表格回复:https://docs.google.com/spreadsheets/d/1a9H2HqAwl29IY6-aCvCKs12Xb3vDcZHCOoNugx81PTA/edit#gid=1939572907

表单数据生成在"原始数据"上面的电子表格的标签。但是,我想在"教师列表中以不同的格式自动重新排列表单回复"表单提交上的电子表格的选项卡。我们正在努力跟踪我们访问教师房间的频率,因此希望所有时间戳都显示在教师姓名旁边。

我不知道我是否应该使用公式或脚本来完成工作。

为了向您展示我们的最终目标,我有两个表单提交,我已在单元格中输入,我们希望它们出现在"老师列表中#34;标签。

非常感谢任何帮助我实现这一目标的建议或资源!

1 个答案:

答案 0 :(得分:1)

这应该会给你一个良好的开端。而且,我已经删除了教师列表选项卡中G列中单元格的合并。

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Raw Data');
  var data = sheet.getDataRange().getValues();

  var formatSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Teacher List');
  var formatData = formatSheet.getDataRange().getValues();

  var name = data[sheet.getLastRow()-1][2];
  var flag = 0, index;

  for(var i=1; i<formatData.length; i++)
  {
    if(name == formatData[i][0])
    {
      flag = 1;
      index = i;
      break;
    }
  }

  if(flag == 1)
  {
    for(var i=1; i<=5; i++)
    {
      if(formatData[index][i] == "")
      {
        formatSheet.getRange(index+1, i+1).setValue(data[sheet.getLastRow()-1][0]);
        formatSheet.getRange(index+1, 7).setValue(formatData[index][6].concat('; '+data[sheet.getLastRow()-1][3]));
        break;
      }
    }
  }
}

但是有可能超过5次访问吗?教师名单标签的第一栏是否会整个相同?如果找不到与教师或PLC观察到的匹配,是否要添加新行?从原始数据与教师列表选项卡的第一列? 如果回答这些问题是积极的,你需要稍微调整一下代码,试一试。如果你被困住了,我会帮忙的。

编辑:请将appscript触发器设置为:从表单 - &gt;的onSubmit。