我正在尝试创建一个脚本,允许用户将突出显示的单元格范围复制到另一个未打开的 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);
}
我正在尝试将突出显示的范围复制到另一个谷歌工作表文档中的工作表。
如果我的理解是正确的,这个修改怎么样?我认为您的情况有两种模式。
在此模式中,仅复制值。请修改如下。如果您不需要复制格式,则可以使用它。
从: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);
在此模式中,值和格式都被复制。请修改如下。不幸的是,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);
如果我误解了你的问题,我深表歉意。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句