这是上一篇文章的后续内容,但我无法弄清楚如何将其添加到之前的帖子中。这是前一篇文章的链接。 Copying Data Sheet1 to Sheet2 so you can sort & edit both sheets (google apps script?)
第二部分 感谢Daniel, 我有以下内容 在sheet1(Participant_Registration)上有一个按钮,当按下时,它会向sheet1和sheet2(Learning_Sessions_Attendance)添加ID。 然后我们使用vlookup函数将列B-D从sheet1传输到sheet2 我编写了自己的脚本来为参与者添加说明。
现在这就是我现在需要帮助的地方。 对原始脚本的小修复 该剧本虽然很棒,却开始将ID编号为2而不是1.有没有办法解决这个问题?
新脚本 在sheet1(Participant_Registration)上,如果列L,M或N具有值=“Group1”,我希望将ID(在A列中)转移到sheet3(Consultation1_Attendance)。 如果L,M或N的值为“Group2”,我希望(A列)中的ID转移到Sheet4(Consultation2_Attendance)。
以下是新脚本的注意事项,这使我很难编写它。 在训练过程中,人们可能会改变组,这意味着函数可能需要一个onEdit函数,而不能仅仅转移最后一行。如果该表格上尚未提供该ID,则需要转移活动行并仅将其转移到咨询出席表格。 我尝试了查询公式 - 不起作用,因此您无法对咨询考勤表中的行进行排序,我们正在向该表中添加新数据。
注意:最终我将使用此脚本来拥有10个可能的咨询组。我不确定是否有办法按照组的数量自动复制工作表Consultation1_Attendance并将其填充给分配给该组的人员。
这是表格的链接。 https://docs.google.com/spreadsheets/d/1cvKO2tPKeZdLWHc2XVfli8lYVylXCas4VgSG-wB_lLM/edit?usp=sharing
code.gs下的代码运行。我在代码中的尝试是在ConsultGpAssign.gs下进行的(他们是非常悲伤的尝试)。我只是在学习。我一直在尝试各种各样的事情,并且可以真正使用帮助。
我还粘贴了一次明显无效的尝试。
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Participant_Registration" && ((r.getColumn() == 12 && r.getValue() == "Group1") || (r.getColumn() == 13 && r.getValue() == "Group1") || (r.getColumn() == 14 && r.getValue() == "Group1"))) {
var row = r.getRow(); //Not sure if this works
//only want to transfer ID column A not sure how to do this
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Consultation1_Attendance");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target); //Only want to transfer information if it's not already on sheet. Do not want to delete
}
}
答案 0 :(得分:0)
看看这一行:
s.getRange(row, 1, 1, numColumns).moveTo(target); //Only want to transfer information if it's not already on sheet. Do not want to delete
moveTo()
方法削减范围。但是您的评论表明您不想删除。削减范围将删除它。您已经定义了目标范围。使用getValues()
获取您要复制的内容:
var myValuesToCopy = s.getRange(row, 1, 1, numColumns).getValues();
target.setValues(myValuesToCopy);