在编辑时将数据从一个电子表格复制到另一个电子表格

Copy data from one spreadsheet to another on edit

我已经尝试了所有方法,但我无法完成这项工作=/

我正在尝试使用 setValues() 将数据从一个电子表格复制到另一个电子表格,因为 link 对我不起作用。我还需要保持触发器处于编辑状态。

因此,我创建了一个名为 AddConvocacao 的函数,并且总是在对脚本进行任何更改时 运行。

function addConvocacao(e){
  var linha = e.range.getRow(); //get the number of the line, where have edit
  var nome = e.source.getActiveSheet().getRange(linha,2).getValue(); //get the value of the field 

  var targetSheet = SpreadsheetApp.openById('1iQbZ7iB9ddc-HwLK9vG0eVEeWWqXKJZ0ry7U_Hm4SkQ') //open the other spreedsheet 
  var targetName = targetSheet.getSheetByName('Pac'); //open the tab
  var lastRow = targetName.getLastRow(); //count the last row in this tab
  lastRow = lastRow+1; //add 1
  
 targetName.getRange(lastRow, 2).setValue(nome); // set the value 
 // targetName.getRange(lastRow, 3).setValue(valorCol7);
 // targetName.getRange(lastRow, 5).setValue(dose);
 // targetName.getRange(lastRow, 6).setValue(diagnostico);
 // targetName.getRange(lastRow, 7).setValue(medico);
}

为什么我在编辑时使用无效?

非常感谢! =)

我觉得我做的有点不同。我将复选框放在第一列并从第二列捕获值并将其发送到另一个 spreadsheet 到第二列的底部

function onMyEdit(e) {
  //e.source.toast('entry');
  const sh = e.range.getSheet();
  //Logger.log(JSON.stringify(e));
  if (sh.getName() == 'Sheet1' && e.range.columnStart==1 && e.value=="TRUE") {
    //e.source.toast('cond');
    const v = sh.getRange(e.range.rowStart, 2).getValue();
    var tss = SpreadsheetApp.openById(getGlobal('targetid'));
    var tsh = tss.getSheetByName('Sheet1');
    tsh.getRange(tsh.getLastRow() + 1, 2).setValue(v);
    e.range.setValue("FALSE");
  }
}

您必须对我们使用可安装的触发器 openById();

getGlobal(targetid) 只是得到一个传播sheet id 你可以用 id

替换它

此外,我将操作限制为只有一个 sheet,并且仅当我将复选框设置为 true 时。我在代码中将其重置为 false。

你需要修改一些东西才能让它为你工作,因为当我做例子时,我是按照我的方式做的。