下面的代码将复制并移动到同一工作簿中称为“需要充值”的下一个电子表格。
我希望将数据发送到另一个工作簿中的另一个电子表格。
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);
但是没用
谁能告诉我我哪里出问题了
谢谢
答案 0 :(得分:0)
s.getRange(row, 1, 1, numColumns)
复制到TOP UP NEEDED
的电子表格中sheet ID
的最后一行。如果我的理解正确,那么这个答案如何?请认为这只是几个可能的答案之一。
很遗憾,在当前阶段,类别范围的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);
在此模式下,使用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) {
此修改后,please install the OnEdit event trigger to installedOnEdit
as the installable trigger.到此为止,在编辑单元格时,运行installedOnEdit
时没有执行两次。请注意这一点。
如果我误解了您的问题,而这不是您想要的方向,我深表歉意。