Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 根据工作表名称将电子表格行从一张工作表复制到另一张工作表_Google Apps Script_Google Sheets_Google Forms - Fatal编程技术网

Google apps script 根据工作表名称将电子表格行从一张工作表复制到另一张工作表

Google apps script 根据工作表名称将电子表格行从一张工作表复制到另一张工作表,google-apps-script,google-sheets,google-forms,Google Apps Script,Google Sheets,Google Forms,请帮助这个非专家——他的工作取决于此 我有一个谷歌表格,将答案输入到谷歌电子表格的一张表格中——我们称之为“主表格”。表格中的一个问题是询问工作编号。我已经能够计算出如何获取受访者输入的每个唯一工作编号,并在同一个电子表格中按该名称创建一张表格。我甚至在每一张新表格的顶部都复制了表格答案的标题 我无法开始工作的是,在主工作表中快速搜索所有答案,无列标题,并根据条件匹配将行复制到工作表名称,作业编号值等于工作表名称值。因此,如果有人申请65号工作,则会将响应从主工作表复制到名为“65”的工作表 首

请帮助这个非专家——他的工作取决于此

我有一个谷歌表格,将答案输入到谷歌电子表格的一张表格中——我们称之为“主表格”。表格中的一个问题是询问工作编号。我已经能够计算出如何获取受访者输入的每个唯一工作编号,并在同一个电子表格中按该名称创建一张表格。我甚至在每一张新表格的顶部都复制了表格答案的标题

我无法开始工作的是,在主工作表中快速搜索所有答案,无列标题,并根据条件匹配将行复制到工作表名称,作业编号值等于工作表名称值。因此,如果有人申请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);