用于将 google 电子表格行的部分内容复制到另一个电子表格并添加全部基于单元格的值的脚本

Script for copying parts of a google spreadsheet row to another spreadsheet and adding a value all based on a cell

我对编码很陌生,写这段代码真的很费劲。我希望有人能帮助我。这是我想要完成的:

当 "y" 或 "Y" 被放置在 "Reviewed 2018 2 Week Snapshot for Jim" 的第 19 列 ("S") 时,我想复制列 B:G & J:R 那一行。

将复制的行放在另一个名为 "Accounting" 的电子表格中,并在列 C:Q 上有一个标题为 "Unprocessed Acct Data" 的选项卡。

然后我需要在粘贴行的 B 列中写入 "JT"。

最后,将原来的"y"更新为Copied。

这是两个测试文档的 link,以防有帮助。

2 week Snapshot

Accounting

function myFunction(e) {
  var sourceSheetName = "Reviewed 2018 2 Week Snapshot for Jim";
  var destinationSpreadsheetId = "1l1f6SrN7d6hYDhfv8W_ne15vAd7xSJlC6138jpoXpC4";
  var destinationSheetName = "Unprocessed Acct Data";

  if (e.source.getSheetName() == sourceSheetName && e.range.getcolumn() == 19 && e.value.toUpperCase() == "Y") {
    var sourceValues = e.source.getRange("B:G" && "J:R").getValues().filter(function(e){return e.filter(String).length > 0});
    var tss = SpreadsheetApp.openById(destinationSpreadsheetId);
    var ts = tss.getSheetByName(destinationSheetName);
    ts.getRange(ts.getLastRow() + 1, 1, sourceValues.length, sourceValues[0].length).setValues(sourceValues);
  }
}

如果我对你的问题的理解是正确的,那么这个修改怎么样?我认为您的情况有几个答案。所以请将此视为其中之一。

修改点:

  • Reviewed 2018 2 Week Snapshot for Jim 中检索 "B:R" 的值作为源值。
    • 检索到 Y 所在行的第 "B" 列到第 "R" 列的值。
  • 从源值中检索 "B:G" 和 "J:R" 的值,并添加 "JT".
  • 将修改后的值放入文件ID为1l1f6SrN7d6hYDhfv8W_ne15vAd7xSJlC6138jpoXpC4的电子表格"B:Q"到Unprocessed Acct Data
  • Reviewed 2018 2 Week Snapshot for Jim 上将 Y 修改为 Copied

修改后的脚本:

请修改如下

从:
if (e.source.getSheetName() == sourceSheetName && e.range.getcolumn() == 19 && e.value.toUpperCase() == "Y") {
  var sourceValues = e.source.getRange("B:G" && "J:R").getValues().filter(function(e){return e.filter(String).length > 0});
  var tss = SpreadsheetApp.openById(destinationSpreadsheetId);
  var ts = tss.getSheetByName(destinationSheetName);
  ts.getRange(ts.getLastRow() + 1, 1, sourceValues.length, sourceValues[0].length).setValues(sourceValues);
}
到:
if (e.source.getSheetName() == sourceSheetName && e.range.getColumn() == 19 && e.value.toUpperCase() == "Y") {
  var row = e.range.getRow();
  var sourceValues = e.source.getRange("B" + row + ":R" + row).getValues()[0];
  var values = [sourceValues.slice(0, 6).concat(sourceValues.slice(8, 17))];
  values[0].unshift("JT");
  var tss = SpreadsheetApp.openById(destinationSpreadsheetId);
  var ts = tss.getSheetByName(destinationSheetName);
  ts.getRange(ts.getLastRow() + 1, 2, values.length, values[0].length).setValues(values);
  e.range.setValue("Copied");
}

注:

  • 在您共享的电子表格中,有几个项目和函数。所以当你使用这个修改后的脚本时,请给一个新的函数名(例如,它是myFunction2(e)),并请给它安装触发器。如果函数名称重复,则脚本无法正常运行。

如果我误解了你的问题,请告诉我。我想修改一下。