【发布时间】:2015-09-04 13:57:02
【问题描述】:
这是对上一篇文章的跟进,但我不知道如何将其添加到上一篇文章中。这是上一篇文章的链接。 Copying Data Sheet1 to Sheet2 so you can sort & edit both sheets (google apps script?)
第二部分 感谢丹尼尔, 我有以下 在 sheet1 (Participant_Registration) 上有一个按钮,当按下该按钮时,会将 ID 添加到 sheet1 和 sheet2 (Learning_Sessions_Attendance)。 然后我们使用 vlookup 函数将 B-D 列从 sheet1 转移到 sheet2 我编写了自己的脚本来为参与者添加说明。
现在这是我现在需要帮助的地方。 对原始脚本的小修复 该脚本虽然很棒,但从 2 开始编号 ID,而不是 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
}
}
【问题讨论】:
-
您在设置值之前递增
Biggest++;。第 71 行。将该行移到两个setValue()行之外,编号应该从 1 开始。但是,您需要在声明它的同时为biggest分配一个值。现在,您通过不分配任何内容将其声明为未定义。将var Biggest;更改为var Biggest=1; -
感谢您的建议,但不幸的是它没有奏效。如果我设置最大 =1,它总是 1 var Biggest=1。当我将 Biggest++ 移到 SetValue 行之后时,也会发生同样的事情。我总是可以将 1 作为两个工作表上的顶部 ID 作为解决方法(已经非常幸运地得到了计数器的帮助),但我只是想有一种方法可以将它编程为从 1 开始。
-
在原始脚本中,使用
var MaxID = 0;而不是var MaxID = 1;(问题并不完全在 Biggest++ 中。即使没有 ID,函数getBiggestID也会返回 1 作为当前最大的 ID ) -
这行得通,所以现在 ID 从 1 开始,谢谢。很困惑,因为代码最初可以工作。
标签: google-apps-script google-sheets