【发布时间】:2019-09-10 08:35:31
【问题描述】:
我正在尝试将 Sheet1 B4:E 的范围复制并粘贴到新的目标范围 Sheet 2 B4:E 到 非 空行,因为我在 Sheet2 的 F 列中也有一个公式。
我目前拥有的脚本只会粘贴到下一个可用的空行,但由于列 F 中有一个公式,它会将源范围粘贴到 Sheet2的最底部>。 (因为脚本将 F 中的公式视为非空行)
有没有办法复制一个范围并将其粘贴到另一张纸上的特定范围内,同时在再次运行时不会覆盖任何数据?
如果我知道如何将它们“合并”在一起,我已经编写了 2 个脚本来完成这项工作。
脚本 1: 将特定范围复制并粘贴到目标工作表的下一个空行,并且在重新运行脚本时不会覆盖。
Script 1:
function transferArchive() {
//TAB 1
//Target Range - Tab 1, Range 1
var sss = SpreadsheetApp.getActiveSpreadsheet();
var ss = sss.getSheetByName('Front Sheet');
var range = ss.getRange('B4:E');
var data = range.getValues();
//Destination Range - Tab 1, Range 1
var tss = SpreadsheetApp.getActiveSpreadsheet();
var ts = tss.getSheetByName('Printed POs');
ts.getRange(ts.getLastRow()+1, 2, data.length, data[0].length).setValues(data);
}
脚本 2:将复制并粘贴到另一张纸上的特定范围,但每次我重新运行脚本时都会覆盖。
Script 2:
function getdata() {
//Copies source range to specific target range, but overwrites, rather than copy down into a new row.
//
// Target range - Copy
var sourcess = SpreadsheetApp.openById("1GDMpcONdRR56QbZkA17EcvetWggltAMhzeddhNEEUG0");
var sourcesheet = sourcess.getSheetByName('Front Sheet');
var sourcerange = sourcesheet.getRange('B4:E');
var sourcevalues = sourcerange.getValues();
// Destination range - Paste
var ss = SpreadsheetApp.getActiveSpreadsheet();
var destsheet = ss.getSheetByName('Printed POs');
var destrange = destsheet.getRange('B6:E');
destrange.setValues(sourcevalues);
}
【问题讨论】:
标签: javascript google-sheets copy paste