我正在尝试开发一个脚本来在Google电子表格中执行以下操作:
1)复制电子表格1上Tab Source1的范围B3:K102。
2)将复制的范围(作为值)粘贴到电子表格2上Tab Destination1的最后一行。
3)清除电子表格1上的范围B3:K102。
4)复制范围C3:K102在Tab' Source2'电子表格1。
5)粘贴来自' Source2'的复制范围。到' Source1!B3:K102'(作为公式)。
以下是我尝试并且无法使其正常运行的脚本。请帮助!
请注意,我对我正在做的事情几乎没有任何线索,我从一位了解一点的朋友那里得到了这个剧本,但他已经无法帮助我了。因此,如果有人可以通过纠正错误并添加它所遗漏的内容来帮助我,我将非常感谢您是否可以粘贴整个最终脚本以便我不会搞砸它。
感谢很多!
body
答案 0 :(得分:1)
此示例脚本可能不是您想要的,因为我看不到您的样本表。所以,如果这不是你想要的,请随时告诉我。
当它向单元格导入许多数据时," setValues()"比#34; setValue()"更快。 https://developers.google.com/apps-script/reference/spreadsheet/range#setValues(Object)
"的GetValues()"可以检索单元格的值。 " getFormulas()"可以检索细胞的公式。在此示例中,将检索值和公式,并从Source2复制到Source1。
要从Source2复制到Source1,您要将数据复制到Source1的最后一行还是要复制到' B3:K102'?在目前的示例中,它的最后一行Source1就像您的脚本一样。如果Source1具有单元格(小于102),除了' B3:K102',Source2中的公式可能不适用于Source1。
示例脚本:
function Copy() {
var srcs = '19BsivpPDO8ov3tHXslCzNQi0cB8YeP1gQ-5Zt-4Eb64';
var dest = '1tVnIMNQ7oE8YuxLU2KpBSL-Py3T8IqJwV6j59Pfo3j0';
var srcs_ss = SpreadsheetApp.openById(srcs);
var dest_ss = SpreadsheetApp.openById(dest);
var src1 = srcs_ss.getSheetByName('Source1');
var src2 = srcs_ss.getSheetByName('Source2');
var dest = dest_ss.getSheetByName('Destination1');
var src1_range = src1.getRange('B3:K102');
var src1_f = src1_range.getFormulas();
var src1_dat = src1_range.getValues();
src1_f.forEach(function(e1, i1){
e1.forEach(function(e2, i2){
if (e2 != "") src1_dat[i1][i2] = e2;
});
});
src1_range.clearContent();
dest.getRange(dest.getLastRow(), 2, src1_dat.length, src1_dat[0].length).setValues(src1_dat);
var src2_dat = src2.getRange('C3:K102').getValues();
src1.getRange(src1.getLastRow(), 2, src2_dat.length, src2_dat[0].length).setValues(src2_dat);
}