我对编码很陌生,写这段代码真的很困难。我希望有人能帮助我。这是我想要完成的:
当"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)
(,并请为其安装触发器。如果函数名称重复,则脚本无法正常工作。
如果我误解了你的问题,请告诉我。我想修改它。