【发布时间】:2021-08-13 20:43:15
【问题描述】:
当编辑工作表中的特定选项卡并将其复制到另一个工作表中的特定选项卡时,我正在尝试使用 onEdit 触发器。例如:如果工作表 1 测试 1 选项卡中有任何更改,那么它将复制工作表 1 测试 1 选项卡中的任何内容到工作表 2 测试 1。但如果更改在工作表 1 测试 2 选项卡中,那么它将复制工作表 1 测试 1 选项卡中的任何内容工作表 1 测试 2 选项卡到工作表 2 选项卡 2 选项卡上。
我只能手动复制和粘贴(我可以成功地将工作表 1 测试 1 选项卡复制到工作表 2 测试 1 选项卡或工作表 1 测试 2 选项卡到工作表 2 测试 2 选项卡)但是当我添加 onEdit在我的代码上触发和 if 循环(用于指定编辑发生的位置以及源和目标选项卡的位置)然后代码不会运行。
这是我的 2 个代码(第一个是指定源和目标的 if else 循环,第二个是 onEdit 触发器):
代码 1
function test1()
{var sheet = SpreadsheetApp.getActiveSheet().getSheetName()
if(sheet == 'Test 1') {
//your script
var sss = SpreadsheetApp.openById('1xk1ayrBYXCDdHcIwi7Hukq1xnNjqSTsQ7CHQbzfFiRM'); //replace with source ID
var ss = sss.getSheetByName('Test 1');
var sr = ss.getRange("A1:N25");
var data = sr.getValues();
var tss = SpreadsheetApp.openById('1Ut-eyO3FMBApQd62ewtINmIQSQJSDL7DCU5bRIzdBVY'); //replace with destination ID
var ts = tss.getSheetByName('Test 1');
var tr = ts.getRange("A1:N25");
tr.setValues(data);
}
else if(sheet == 'Test 2') {
//your script
var sss = SpreadsheetApp.openById('1xk1ayrBYXCDdHcIwi7Hukq1xnNjqSTsQ7CHQbzfFiRM'); //replace with source ID
var ss = sss.getSheetByName('Test 2');
var sr = ss.getRange("A1:N25");
var data = sr.getValues();
var tss = SpreadsheetApp.openById('1Ut-eyO3FMBApQd62ewtINmIQSQJSDL7DCU5bRIzdBVY'); //replace with destination ID
var ts = tss.getSheetByName('Test 2');
var tr = ts.getRange("A1:N25");
tr.setValues(data);
}
}
代码 2
function createEditTrigger() {
ScriptApp.newTrigger("test 1")
.forSpreadsheet(SpreadsheetApp.getActive())
.onEdit()
.create();
}
这是我的样本表:
样本表 1:https://docs.google.com/spreadsheets/d/1xk1ayrBYXCDdHcIwi7Hukq1xnNjqSTsQ7CHQbzfFiRM/edit#gid=0
如果我只需要将工作表 1 中的更改复制到工作表 2,那么解决此问题的最佳方法是什么?我不需要监视工作表 2 中是否发生任何变化,也不需要将工作表 2 中的任何内容复制到工作表 1。
【问题讨论】:
标签: javascript google-apps-script google-sheets