复制和粘贴谷歌工作表到另一个谷歌工作表时,特定的标签被编辑



我试图使用onEdit触发器时,工作表中的特定选项卡被编辑,并将其复制到另一个工作表中的特定选项卡。例如:如果在第1页Test 1标签中有任何变化,那么它将复制在第1页Test 1标签中的任何内容到第2页Test 1。但是,如果更改是在sheet1 Test 2选项卡中,则它会将sheet1 Test 2选项卡中的任何内容复制到sheet2 tab 2选项卡中。

我只能手动复制和粘贴(我可以成功地将表1 Test 1选项卡复制到表2 Test 1选项卡或表1 Test 2选项卡复制到表2 Test 2选项卡),但是当我在代码上添加onEdit触发器和if循环(用于指定编辑发生的位置以及源和目标选项卡的位置)时,代码不会运行。

下面是我的两个代码(第一个将是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

样品表2:https://docs.google.com/spreadsheets/d/1Ut-eyO3FMBApQd62ewtINmIQSQJSDL7DCU5bRIzdBVY/edit gid = 921178690

如果我只需要将表1中的更改复制到表2中,那么最好的方法是什么?我不需要监视表2中是否发生了任何变化,也不需要将表2中的任何内容复制到表1中。

SpreadsheetApp.openById()需要授权,onEdit()不能执行需要权限的操作。必须使用可安装的触发器。

最新更新