Google apps script 根据多个单元格中的条件,将一张工作表中的单元格复制到另一张工作表中(如果不是副本)
这是前一篇文章的后续文章,但我不知道如何将其添加到前一篇文章中。这是之前文章的链接。 第二部分 多亏了丹尼尔, 我有以下几点 在表1(参与者注册)上有一个按钮,按下该按钮时,会将ID添加到表1和表2(学习课程出席)。 然后,我们使用vlookup函数将B-D列从sheet1传输到sheet2 我编写了自己的脚本,为参与者添加说明 这就是我现在需要帮助的地方。 对原始脚本的小修改 这个脚本虽然很神奇,但从1开始将ID编号为2。有办法解决这个问题吗 新剧本 在表1(参与者注册)上,如果L、M或N列的值为=“Group1”,我希望将ID(a列)转移到表3(咨询1)上。 如果L、M或N的值为=“Group2”,我希望将(a列)中的ID转移到Sheet4(咨询2_出席) 以下是对新脚本的考虑,这使得我很难编写它。 在培训过程中,人们可能会更改组,这意味着该函数可能需要是onEdit函数,而不能仅传输最后一行。它需要转移活动行,并且仅当ID不在咨询考勤表上时才将其转移到咨询考勤表。 我尝试了查询公式-不起作用,因为您无法对咨询考勤表中的行进行排序,我们正在向该表添加新数据 注意:最终我将使用这个脚本来创建10个可能的咨询小组。我不确定是否有一种方法可以自动按组数复制表咨询1_出席情况,并用分配给该组的人员填充 这是一个到工作表的链接。 code.gs下的代码将运行。我在ConsultGpAssign.gs下尝试了这段代码(这是非常可悲的尝试)。我只是在学习。我一直在尝试各种各样的事情,真的需要帮助 我还粘贴了一个尝试,显然在这里不起作用Google apps script 根据多个单元格中的条件,将一张工作表中的单元格复制到另一张工作表中(如果不是副本),google-apps-script,google-sheets,Google Apps Script,Google Sheets,这是前一篇文章的后续文章,但我不知道如何将其添加到前一篇文章中。这是之前文章的链接。 第二部分 多亏了丹尼尔, 我有以下几点 在表1(参与者注册)上有一个按钮,按下该按钮时,会将ID添加到表1和表2(学习课程出席)。 然后,我们使用vlookup函数将B-D列从sheet1传输到sheet2 我编写了自己的脚本,为参与者添加说明 这就是我现在需要帮助的地方。 对原始脚本的小修改 这个脚本虽然很神奇,但从1开始将ID编号为2。有办法解决这个问题吗 新剧本 在表1(参与者注册)上,如果L、M或N列
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
}
}
看看这一行:
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);
看看这一行:
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);
您正在递增
max++设置值之前,请选择“代码>”。第71行。将该行移到两行setValue()
之外,编号应从1开始。但是,您需要在声明值的同时为最大值
赋值。现在,您通过不分配任何内容将其声明为未定义。变化var最大代码>至var最大值=1代码>谢谢你的建议,但不幸的是它没有起作用。如果我将最大值设为1,则它始终为1 var max=1。当我在SetValue行之后移动max++到时,也会发生同样的情况。我总是可以在两张纸上都放一个1作为顶部ID,作为一种变通方法(已经非常幸运有了计数器的帮助),但我只是想有一种方法可以从1开始编程。在原始脚本中,使var MaxID=0代码>而不是var MaxID=1
(问题不完全在Maxime++中。函数getBiggestID
返回1作为当前最大的ID,即使没有ID),因此现在ID从1开始。因为代码最初是有效的,所以感到困惑。您正在递增max++设置值之前,请选择“代码>”。第71行。将该行移到两行setValue()
之外,编号应从1开始。但是,您需要在声明值的同时为最大值
赋值。现在,您通过不分配任何内容将其声明为未定义。变化var最大代码>至var最大值=1代码>谢谢你的建议,但不幸的是它没有起作用。如果我将最大值设为1,则它始终为1 var max=1。当我在SetValue行之后移动max++到时,也会发生同样的情况。我总是可以在两张纸上都放一个1作为顶部ID,作为一种变通方法(已经非常幸运有了计数器的帮助),但我只是想有一种方法可以从1开始编程。在原始脚本中,使var MaxID=0代码>而不是var MaxID=1
(问题不完全在Maxime++中。函数getBiggestID
返回1作为当前最大的ID,即使没有ID),因此现在ID从1开始。因为代码最初是有效的,所以感到困惑。您正在递增max++设置值之前,请选择“代码>”。第71行。将该行移到两行setValue()
之外,编号应从1开始。但是,您需要在声明值的同时为最大值
赋值。现在,您通过不分配任何内容将其声明为未定义。变化var最大代码>至var最大值=1代码>谢谢你的建议,但不幸的是它没有起作用。如果我将最大值设为1,则它始终为1 var max=1。当我在SetValue行之后移动max++到时,也会发生同样的情况。我总是可以在两张纸上都放一个1作为顶部ID,作为一种变通方法(已经非常幸运有了计数器的帮助),但我只是想有一种方法可以从1开始编程。在原始脚本中,使var MaxID=0代码>而不是var MaxID=1
(问题不完全在Maxime++中。函数getBiggestID
返回1作为当前最大ID,即使有n个