【问题标题】:Copy and Paste google sheets to another google sheets when specific tab is edited编辑特定选项卡时将 google 表格复制并粘贴到另一个 google 表格
【发布时间】: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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-07
      • 1970-01-01
      • 2018-12-21
      • 1970-01-01
      • 1970-01-01
      • 2016-02-21
      • 1970-01-01
      相关资源
      最近更新 更多