下面的代码复制范围并移动到同一工作簿中的下一个电子表格,称为“需要充值”。
我希望将数据发送到另一个工作簿中的另一个电子表格。
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)
到TOP UP NEEDED
的Spreadsheet中的工作表的最后一行sheet ID
。如果我的理解是正确的,那么这个答案呢?请认为这只是几个可能的答案之一。
不幸的是,在当前阶段,copyTo()
Class范围不能用于其他电子表格。
在这种模式下,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);
在这种模式下,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事件触发器的可安装触发器。在这种情况下,请如下修改功能名称。
从
function onEdit(event) {
至
function installedOnEdit(event) {
进行此修改之后,请安装OnEdit事件触发器installedOnEdit
作为可安装触发器。这样,在编辑单元格时,installedOnEdit
无需重复执行即可运行。请注意这一点。
如果我误解了您的问题,而这不是您想要的方向,我深表歉意。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句