Google apps script 根据工作表名称将电子表格行从一张工作表复制到另一张工作表
请帮助这个非专家——他的工作取决于此 我有一个谷歌表格,将答案输入到谷歌电子表格的一张表格中——我们称之为“主表格”。表格中的一个问题是询问工作编号。我已经能够计算出如何获取受访者输入的每个唯一工作编号,并在同一个电子表格中按该名称创建一张表格。我甚至在每一张新表格的顶部都复制了表格答案的标题 我无法开始工作的是,在主工作表中快速搜索所有答案,无列标题,并根据条件匹配将行复制到工作表名称,作业编号值等于工作表名称值。因此,如果有人申请65号工作,则会将响应从主工作表复制到名为“65”的工作表 首先,我可能设置了错误的循环,试图排除主工作表中的标题并创建所有工作表名称的数组 但第二个问题是,我需要为“工作表名称”值和“作业编号”值使用变量。我需要能够解释不断增加的工作数量。员工不希望必须创建包含每个新工号的新工作表——他们希望在用户填写新工号时自动完成 我很高兴与任何能为我指明正确方向的人分享我的工作 +++Google apps script 根据工作表名称将电子表格行从一张工作表复制到另一张工作表,google-apps-script,google-sheets,google-forms,Google Apps Script,Google Sheets,Google Forms,请帮助这个非专家——他的工作取决于此 我有一个谷歌表格,将答案输入到谷歌电子表格的一张表格中——我们称之为“主表格”。表格中的一个问题是询问工作编号。我已经能够计算出如何获取受访者输入的每个唯一工作编号,并在同一个电子表格中按该名称创建一张表格。我甚至在每一张新表格的顶部都复制了表格答案的标题 我无法开始工作的是,在主工作表中快速搜索所有答案,无列标题,并根据条件匹配将行复制到工作表名称,作业编号值等于工作表名称值。因此,如果有人申请65号工作,则会将响应从主工作表复制到名为“65”的工作表 首
解决了,所以我拉下了电子表格的链接。尽管我自己,这个社区似乎还是能够帮助我。谢谢。我编写的这个函数将帮助您找到您的工作编号:
function searchColumn(value, rangeValues) {
for (var i = 1; i < rangeValues.length; ++ i) {
if (rangeValues[i] == value) return i;
}
return -1;
}
现在您有了行号,可以使用:
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);
或者类似的东西。然后,您可能需要删除旧电子表格中的数据,以避免重复相同的操作。但这取决于你如何处理。请仔细查看,因为它包含了您需要的所有内容和更多内容:)您的问题是什么?你的密码在哪里?您已经尝试过什么类型的故障排除?我想要一个您正在使用的表单、响应电子表格和脚本项目的公共版本,或者发布一些您尝试过但无法使用的代码。否则,你的问题就太模糊了,无法尝试去理解。此外,如果你的工作依赖于此,你的老板可能没有明确他的优先事项。我喜欢披头士乐队的推荐信哈哈。不管怎样,看看我的答案,因为我觉得它很容易理解。基本上,您只需要在工作表上调用许多
getRange()
函数。请确保您阅读了关于这些函数如何工作的文档(至少是我在回答中提到的那些函数)。它们有特定的参数和返回值,getRange()
有时处理起来会很混乱。要知道getRange()
是基于电子表格中的行号,而不是你所相信的数组索引!好吧,至少我有时会感到困惑。而且对未来来说,向我们展示你的尝试会很有帮助,即使这是一次悲惨的失败。记录器输出、执行记录,所有这些在尝试用GAS编码时都特别有用,并且通常非常详细-当然,这有助于我们帮助您!谢谢你坚持让我找到解决办法。我也很感谢你对今后如何更有效地发布帖子的指导。谢谢你,蒂姆
var jobSheet = mySpreadsheet.getSheetByName(job_number);
jobSheet.getRange(jobSheet.getLastRow() + 1, 1, 1, rowData.length).setValues(rowData);