我对谷歌应用程序脚本相对较新,我正在通过构建脚本慢慢地努力。如果你给出答案,请尽量保持答案尽可能简单,这样我才能理解发生了什么。我想做什么。
我将表单回复表中最后一行提交数据的前五列复制到跟踪器表。 (我可能不需要这么做。)数据包括时间戳,姓氏,名字,日期,阶段。
这是变得复杂的地方。我想将导入数据的姓氏与跟踪工具表的姓氏进行比较。如果姓氏不存在,请将其添加到列表的末尾,并将日期作为相应的匹配阶段放入行中。如果姓氏在那里,请将日期放在与匹配阶段对应的同一行中。
查看下面的示例,引入的姓氏是Smith。由于Smith位于列表中,因此将日期1/1/2014放在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
请记住,当您发布代码回复时,我是新手。我知道我所做的一些事情可能效率低下而且不正确,但我正处于学习过程中。
答案 0 :(得分:-1)
经过多个小时的试验和错误,我已经能够在名称预先填充并清理代码时使其工作。现在我必须弄清楚如何将名称添加到列表末尾,如果它是一个新名称,与其他东西相比应该很容易。
function copyLastRowtoTracker() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses");
var lastRow = ss.getLastRow();
var name = ss.getRange(lastRow,1,1,5);
var sstracker = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Tracker");
var sstrackerLastRow = sstracker.getLastRow()
name.copyValuesToRange(sstracker,1,5,sstrackerLastRow+3,sstrackerLastRow+3);
var walkname = sstracker.getRange(sstrackerLastRow + 3, 2).getValue();
var date = sstracker.getRange(sstrackerLastRow + 3, 4).getValue();
var stage = sstracker.getRange(sstrackerLastRow + 3, 5).getValue();
var teacherarray = sstracker.getRange(2, 2, sstrackerLastRow, 1).getValues();
var stagearray = sstracker.getRange(1, 1, 1, 12).getValues();
for(var i = 0; i < teacherarray.length; i++){
var teachname = teacherarray[i];
if(teachname == walkname){
for(var r = 0; r < 12; r++){
var stagename = stagearray[0][r];
if(stagename == stage){
var row = sstracker.getRange(i + 2, r + 1).setValue(date).setBackground('Green');
}
}
}
}
var removeLastRow = sstracker.getLastRow();
var range = sstracker.getRange(removeLastRow, 1, 1, 12);
range.clear();``
}