Javascript 在不同的电子表格之间传输数据Google电子表格

Javascript 在不同的电子表格之间传输数据Google电子表格,javascript,google-apps-script,Javascript,Google Apps Script,/* ****将行移动到由特定单元格值确定的编辑*** */ //纸张名称 var sourceSheet=“数据源” var destinationSheet=“datadestiny” /*上校:要观看的专栏, *changeVal:要更改的值, *戴尔:您想在更改后删除吗? */ 变量检查={ “col”:22, “changeVal”:“确定”, “del”:对 }; /*要粘贴到其他工作表中的内容。 *开始:开始列 *cols:要复制多少列 */ 变量范围={ “开始”:1, “科尔斯

/*
****将行移动到由特定单元格值确定的编辑***
*/
//纸张名称
var sourceSheet=“数据源”
var destinationSheet=“datadestiny”
/*上校:要观看的专栏,
*changeVal:要更改的值,
*戴尔:您想在更改后删除吗?
*/
变量检查={
“col”:22,
“changeVal”:“确定”,
“del”:对
};
/*要粘贴到其他工作表中的内容。
*开始:开始列
*cols:要复制多少列
*/
变量范围={
“开始”:1,
“科尔斯”:2
};
函数onEdit(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getActiveSheet()
if(sheet.getName()==sourceSheet){
//获取活动单元格
var cell=sheet.getActiveCell();
var cellCol=cell.getColumn();
var cellRow=cell.getRow();
if(cellCol==check.col){
if(cell.getValue()==check.changeVal){
//选择要导出的范围
var exportRange=sheet.getRange(cellRow,pasterRange.start,1,pasterRange.cols);
//选择过去的目的地
var dest=SpreadsheetApp.openById('1sMenz31IMkCsa20ORue09EVMKyNujHCqgnM6C5HD_-yo');
var pasteddestination=dest.getSheetByName(destinationSheet);
var pasteEmptyBottomRow=pasteDestination.getLastRow()+1;
//将行复制到新目标
exportRange.copyTo(pasteDestination.getRange(pasteEmptyBottomRow,1),
SpreadsheetApp.CopyPasteType.PASTE_值);
//如果delete为true,请在复制后删除
if(check.del){
表1.deleteRow(cellRow);
};
};
};
};
};请尝试以下方法:

第一个问题是您需要一个可安装的触发器。您可以手动创建,也可以使用软件创建。你的选择。第二个问题是“复制到”只能在同一个电子表格上工作。因此,您可以使用getValues()和setValues(),如下所示:

function testonEdit(e) {
  var sh=e.range.getSheet();
  if(sh.getName()=='datasource') {
    if(e.range.columnStart==22 && e.value=="OK"){
      var dss=SpreadsheetApp.openById('11f9yyZZs5Ret6YoXinvne0eCXWWaXdj12t6MnrT43vM');
      var dsh=dss.getSheetByName('datadestiny');
      var v=sh.getRange(e.range.rowStart,1,1,2).getValues();
      dsh.getRange(dsh.getLastRow(),1,v.length,v[0].length).setValues(v);
      sh.deleteRow(e.range.rowStart);
    }
  }
}

我对代码做了一些修改,以适合我的测试。我尽量使onEdit()函数尽可能轻,因为您希望它们尽可能快,因为您只有30秒的时间来完成它们

我可以问一下onEdit()函数无法传输数据的问题。
?如果发生错误,请显示它。你的脚本不起作用,我复制并粘贴了它的函数(调整openById)@Fragosojp你需要将它作为可安装的触发器添加到当前项目的触发器下,单击右下角的
+添加触发器
,设置您希望它运行的频率。我猜想您希望选择OneEdit样式的触发器,而不是基于时间的。脚本已经过测试,如果您知道如何安装它,它就可以工作。我现在了解触发器的工作原理,还有一件事不是在同一行上传输数据,而是总是在destiny工作表的下面插入一行?我试着用getLastRow,但我不能。。。