繁体   English   中英

修改代码 - 将范围复制到另一个电子表格 Google 表格

[英]Modify Code - Copy Range to another Spreadsheet Google Sheets

下面的代码复制范围并移动到名为“需要充值”的同一工作簿中的下一个电子表格。

我希望它将此数据发送到另一个工作簿中的另一个电子表格。

 function onEdit(event) {
// assumes source data in sheet named PrepSheet
// target sheet of move to named TOP UP NEEDED
// getColumn with check-boxes is currently set to column I
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "PrepSheet" && r.getColumn() == 9 && r.getValue() == true) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("TOP UP NEEDED");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).copyTo(target);

 }
 }

我尝试更换

var targetSheet = ss.getSheetByName("TOP UP NEEDED");

var targetSheet = SpreadsheetApp.openById("sheet ID").getSheetByName("TOP UP NEEDED");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).copyTo(target);

但它没有用

谁能告诉我我哪里出错了

谢谢

  • 当编辑单元格时,您希望将s.getRange(row, 1, 1, numColumns)的值和格式复制到工作sheet ID电子表格中TOP UP NEEDED表的最后一行。

如果我的理解是正确的,这个答案怎么样? 请将此视为几种可能的答案之一。

修改点:

不幸的是,在现阶段,Class range 的copyTo()不能用于其他电子表格。

模式一:

在此模式中,使用了copyTo() 因此,值和单元格格式都被复制。

修改后的脚本:

当您的脚本被修改时,请进行如下修改。

从:
 var targetSheet = ss.getSheetByName("TOP UP NEEDED"); var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); s.getRange(row, 1, 1, numColumns).copyTo(target);
到:
 var targetSS = SpreadsheetApp.openById("sheet ID"); s = SpreadsheetApp.getActiveSheet(); var tempSheet = s.copyTo(targetSS); var targetSheet = targetSS.getSheetByName("TOP UP NEEDED"); var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); tempSheet.getRange(row, 1, 1, numColumns).copyTo(target); targetSS.deleteSheet(tempSheet);

模式2:

在此模式中,使用了getValues()appendRow() 所以只复制值。

修改后的脚本:

当您的脚本被修改时,请进行如下修改。

从:
 var targetSheet = ss.getSheetByName("TOP UP NEEDED"); var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); s.getRange(row, 1, 1, numColumns).copyTo(target);
到:
 var targetSheet = SpreadsheetApp.openById("sheet ID").getSheetByName("TOP UP NEEDED"); var sourceValues = s.getRange(row, 1, 1, numColumns).getValues()[0]; targetSheet.appendRow(sourceValues);

注意:重要

  • 在这个修改中,不能使用onEdit()的简单触发器。 openById()处发生错误。 所以请使用 OnEdit 事件触发器的可安装触发器。 在这种情况下,请按如下方式修改函数名称。

参考:

如果我误解了您的问题并且这不是您想要的方向,我深表歉意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM