我对谷歌应用程序脚本相对较新,并且正在慢慢地构建脚本。请,如果您给出答案,请尽量使答案尽可能简单,以便我了解发生了什么。我正在尝试做的事情。
- 我们的管理员必须为大楼中的每位教师完成 8 个评估过程,我正在尝试构建一个电子表格,该电子表格将根据通过谷歌表格提交的数据对其进行跟踪。
我将表单响应表上最后一行提交数据的前五列复制到跟踪表。(在我弄清楚这一切之后可能不必这样做。)数据包括时间戳、姓氏、名字、日期、阶段。
这就是复杂的地方。我想将导入数据的姓氏与跟踪表的姓氏进行比较。如果 lastname 不存在,则将其添加到列表末尾并将日期放在行中作为相应的匹配阶段。如果有姓氏,请将日期放在与匹配阶段对应的同一行中。
查看下面的示例,输入的姓氏是 Smith。由于 Smith 在列表中,因此将日期 2014 年 1 月 1 日放在 walkthrough2 列中。随着管理员继续评估过程,将有更多教师添加到列表中,并且它将向右增长,填充完成该部分评估的日期。
跟踪表中的数据
Administrator Teacher PreEval Walkthrough1 Walkthrough2
Brown 10/2/2013 10/15/2013 11/15/2103
Smith 10/2/2013 10/16/2013
Korytoski 10/5/2013 10/17/2013
Reddick 10/15/2013 10/17/2013
从表单响应电子表格中提取的数据
11/10/2013 20:08:34 Smith Kim 1/1/2014 Walkthrough2
代码
function copyLastRowtoTracker() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = SpreadsheetApp.getActiveSheet();
var lastRow = sh.getLastRow()
var lastCol = sh.getLastColumn();
var name = sh.getRange(lastRow,1,1,5);
var tracker = ss.getSheetByName('Tracker');
ss.setActiveSheet(ss.getSheets()[2]);
var sht = SpreadsheetApp.getActiveSheet();
var lastRowTracker = tracker.getLastRow()
name.copyValuesToRange(tracker,1,5,lastRowTracker+3,lastRowTracker+3);
var walkname = sht.getRange(lastRowTracker + 3, 2).getValue();
var date = sht.getRange(lastRowTracker + 3, 4).getValue();
var stage = sht.getRange(lastRowTracker + 3, 5).getValue();
var teachernamesdata = tracker.getRange(2, 2, lastRowTracker, 1).getValues();
for(var i = 0; i < teachernamesdata.length; i++){
var teachname = teachernamesdata[i];
if(teachname == walkname) then copy date to cell in same row as teachname with
corresponding stage
if(teachname != walkname) then add walkname to end of list and copy date to the cell in
the same row with corresponding stage
请记住,当您发布代码响应时,我对此并不陌生。我知道我所做的一些事情可能效率低下且不正确,但我正在学习过程中。