请帮助这位非专家 - 他的工作取决于它。
我有一个Google表单,可以将答案反馈到Google电子表格的表格中 - 让我们将其称为"主表。"表格的一个问题是询问工号。我已经能够弄清楚如何获取受访者输入的每个唯一作业编号,并在同一电子表格中按该名称创建工作表。我甚至已经在每张新表格的顶部复制了表格答案的标题。
我无法工作的是遍历主表中的所有答案,没有列标题,并根据条件匹配将行复制到工作表名称,作业编号值等于工作表名称值。因此,如果有人申请了职位编号65,那么该回复将从主要工作表复制到工作表,名称为#34; 65。"
对于初学者,我可能会错误地设置循环,尝试排除主工作表中的标题并创建所有工作表名称的数组。
但我遇到的第二个问题是我需要使用工作表名称值和工作编号值的变量。我需要能够解释不断增加的工作数量。工作人员不希望必须创建包含每个新作业编号的新工作表 - 他们希望在用户填写新工作编号时自动完成。
我很高兴与任何能帮助我指明正确方向的人分享我的工作。
+++
解决了,所以我猛拉了电子表格的链接。尽管如此,这个社区似乎能够帮助我。感谢。
答案 0 :(得分:1)
我写的这个功能可以帮助您找到职位编号:
function searchColumn(value, rangeValues) {
for (var i = 1; i < rangeValues.length; ++ i) {
if (rangeValues[i] == value) return i;
}
return -1;
}
给它array of values
(通常是Range.getValues())和value you want to search
,它将返回row number where that value was found
。如果没找到,则为returns -1
。
示例:
// Gets all data in the first column of the sheet
var valuestoSearch = mySheet.getRange(1, 1, sheet.getLastRow()).getValues();
// then
var rowNum = searchColumn(job_number, valuesToSearch);
现在你有了行号,你可以使用:
var rowData = mySheet.getRange(rowNum, 1, 1, mySheet.getLastColumn()).getValues();
这将为您提供行中的所有值,直至表格中的最后一列。
获得该数据后,您可以使用以下方法将其复制到另一个工作表:
var jobSheet = mySpreadsheet.getSheetByName(job_number);
jobSheet.getRange(jobSheet.getLastRow() + 1, 1, 1, rowData.length).setValues(rowData);
或者与此非常相似的东西。然后,您可能希望擦除旧电子表格中的数据,这样您就不会继续重复相同的操作。但这取决于你如何处理它。仔细看看documentation for SpreadsheetApp,因为它有你想要的一切以及更多:)