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



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

当"y"或"Y"放在"Review2018 2 Week Snapshot for Jim"的第19列("S"(中时,我想复制该行的B:G和J:R列。

将该复制的行放在标题为"会计"的不同电子表格上,并在 C:Q 列上显示标题为"未处理的帐户数据"的选项卡。

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

最后,将原始"y"更新为"复制"。

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

2周快照

会计学

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"。
  • 将修改后的值放入"B:Q"以Unprocessed Acct Data文件ID为1l1f6SrN7d6hYDhfv8W_ne15vAd7xSJlC6138jpoXpC4的电子表格。
  • Y修改为Reviewed 2018 2 Week Snapshot for Jim上的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)(,并请为其安装触发器。如果函数名称重复,则脚本无法正常工作。

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

相关内容

最新更新