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

时间:2018-09-05 07:54:55

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

我对编码非常陌生,并且真的很难编写此代码。我希望有人可以帮助我。这是我要完成的工作:

在“ Jim的2018年2周快照回顾”的第19列(“ S”)中放置“ y”或“ Y”时,我要复制该行的B:G和J:R列。

将复制的行放置在标题为“ Accounting”的其他电子表格上,并在C:Q列上使用标题为“ Unprocessed Acct Data”的选项卡。

然后,我需要在该粘贴行“ JT”的B列中写内容。

最后,将原始的“ y”更新为“已复制”。

如果有帮助,这里是两个测试文档的链接。

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);
  }
}

1 个答案:

答案 0 :(得分:0)

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

修改点:

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

修改后的脚本:

请进行如下修改。

从:
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)),并为其安装触发器。如果函数名称重复,则脚本无法正常工作。

如果我误解了您的问题,请告诉我。我想修改它。