【问题标题】:copy spreadsheet rows from one sheet to another conditional on name of sheet根据工作表名称将电子表格行从一张工作表复制到另一张工作表
【发布时间】:2013-11-19 22:39:18
【问题描述】:

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

我有一个 Google 表单,可以将答案输入到 Google 电子表格的表格中——我们称之为“主表格”。表格中的一个问题要求提供工作编号。我已经能够弄清楚如何获取受访者输入的每个唯一工作编号,并在同一个电子表格中使用该名称创建一个工作表。我什至在每张新表格的顶部复制了表格答案的标题。

我无法开始工作的是遍历主工作表中的所有答案,没有列标题,并根据与工作编号值等于工作表名称值的条件匹配将行复制到工作表名称。因此,如果有人申请 65 号工作,该响应会从主工作表复制到另一个工作表,名称为“65”。

对于初学者,我可能错误地设置了循环,试图排除主工作表中的标题并创建所有工作表名称的数组。

但我遇到的第二个问题是,我需要将变量用于工作表名称值和作业编号值。我需要能够解释不断增加的工作数量。员工不想为每个新的工作编号创建一个新工作表——他们希望在用户填写新的工作编号时自动完成。

我很高兴与任何可以帮助我指明正确方向的人分享我的工作。

+++

解决了,所以我拉下电子表格的链接。尽管我自己,看来,这个社区能够帮助我。谢谢。

【问题讨论】:

  • 你有什么问题?你的代码在哪里?您已经尝试过哪种故障排除方法?
  • 我想要您正在使用的此表单、响应电子表格和脚本项目的公开版本,或者发布一些您尝试过但无法开始工作的代码。否则,您的问题 方式 太模棱两可,无法弄清楚。此外,如果您的工作取决于此,您的老板可能没有明确的优先事项。
  • 我喜欢披头士的参考哈哈。无论如何,请参阅我的答案,因为我认为它很容易理解。基本上你只有很多getRange() 函数可以在你的工作表上调用。请确保您阅读了有关每个功能如何工作的文档(至少是我在回答中的那些)。它们有特定的参数和返回值,getRange() 有时会让人难以理解。知道getRange() 是基于电子表格中的行号not 数组索引,就像他们会让您相信的那样!好吧,至少有时我会感到困惑。
  • 对于未来,向我们展示您的尝试会有所帮助,即使它是一个悲惨的失败。记录器输出、执行脚本,所有这些在尝试在 GAS 中编码时特别很有帮助,而且通常非常详细 - 当然,这有助于我们为您提供帮助!
  • 感谢您坚持我的解决方案。我也感谢您对如何在未来更有效地发布的指导。非常感谢,蒂姆

标签: google-apps-script google-sheets google-forms


【解决方案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,因为它有你要找的一切,还有更多:)

【讨论】:

    猜你喜欢
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    相关资源
    最近更新 更多