我正在尝试创建一个脚本,允许用户将突出显示的单元格范围复制到另一个未打开的google sheet文档。如果我要复制数据的工作表在当前文档中,我可以让它工作,但我不知道如何将数据复制到不同的电子表格中。
我尝试过openById或openbyUrl,但一直收到以下错误:
“目标范围和源范围必须在同一电子表格中。”
function copyToDifferentDocument() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
// *** Have to figure out how to make the target a different document!!!! ***
var target = SpreadsheetApp.openById("targetsheetIDgoeshere");
/*
Next we need to pick the particular sheets within those spreadsheets.
Let's say your row is on the sheet named "New Stuff", and you have a sheet in the target spreadsheet named "Archive".
*/
var source_sheet = ss.getSheetByName("New Stuff");
var target_sheet = target.getSheetByName("Archive");
// The below makes the highlighted cells the range that will be copied.
var source_range = source_sheet.getActiveRange();
var last_row = target_sheet.getLastRow();
target_sheet.insertRowAfter(last_row);
var target_range = target_sheet.getRange("A"+(last_row+1)+":G"+(last_row+1));
// Take the highlighted rant and put it on the last row of the target sheet.
source_range.copyTo(target_range);
}
我正在尝试将突出显示的范围复制到不同google sheet文档中的工作表。
发布于 2019-04-08 08:55:23
要将活动电子表格中“新材料”工作表中的活动区域复制到"targetsheetIDgoeshere"电子表格中“
如果我的理解是正确的,那么这个修改如何?我认为你的情况有两种模式。
模式1:
在此模式中,仅复制值。请按如下方式修改。如果您不需要复制格式,则可以使用此方法。
发自:
target_sheet.insertRowAfter(last_row);
var target_range = target_sheet.getRange("A"+(last_row+1)+":G"+(last_row+1));
// Take the highlighted rant and put it on the last row of the target sheet.
source_range.copyTo(target_range);
至:
var values = source_range.getValues();
target_sheet.getRange(last_row + 1, 1, values.length, values[0].length).setValues(values);
模式2:
在此模式中,同时复制值和格式。请按如下方式修改。不幸的是,copyTo()
只能将范围复制到同一电子表格上的范围。这种情况也可以在您的问题的错误消息中看到。因此,在此修改中,首先将工作表复制到目标电子表格。然后,复制该范围。
发自:
target_sheet.insertRowAfter(last_row);
var target_range = target_sheet.getRange("A"+(last_row+1)+":G"+(last_row+1));
// Take the highlighted rant and put it on the last row of the target sheet.
source_range.copyTo(target_range);
至:
if (last_row > 0) target_sheet.insertRowAfter(last_row);
var target_range = target_sheet.getRange(last_row + 1, 1);
var copiedsheet = source_sheet.copyTo(target);
copiedsheet.getRange(source_range.getA1Notation()).copyTo(target_range);
target.deleteSheet(copiedsheet);
参考文献:
如果我误解了你的问题,我道歉。
https://stackoverflow.com/questions/55564866
复制相似问题