Javascript 将特定范围从一张图纸复制到另一张图纸中的第一个空行和特定列
我使用GoogleSheets,我试图使用一个脚本,将某个范围从一个工作表(读取CSV文件)复制到另一个工作表的最后一行,但复制到某个列。 我也不想复制空值 所以我只需要从图纸上复制特定范围的值,如Sheet1!A5:D14,其中忽略空值,将其移动到不同工作表的第一个空行,但不是同一列(因此所有内容都向前移动到C-F列) 我可以用这个,把东西复制到一个特定的专栏:Javascript 将特定范围从一张图纸复制到另一张图纸中的第一个空行和特定列,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我使用GoogleSheets,我试图使用一个脚本,将某个范围从一个工作表(读取CSV文件)复制到另一个工作表的最后一行,但复制到某个列。 我也不想复制空值 所以我只需要从图纸上复制特定范围的值,如Sheet1!A5:D14,其中忽略空值,将其移动到不同工作表的第一个空行,但不是同一列(因此所有内容都向前移动到C-F列) 我可以用这个,把东西复制到一个特定的专栏: function copyRange(e){ var copyFromRange = 'Sheet1!B3:J10'; //
function copyRange(e){
var copyFromRange = 'Sheet1!B3:J10'; // no row for second cell reference
var copyToRangeStart = 'Sheet2!B12';
copyValuesOnly(copyFromRange, copyToRangeStart);
}
function copyValuesOnly(copyFromRange, copyToRangeStart) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var source = ss.getRange(copyFromRange);
source.copyTo(ss.getRange(copyToRangeStart), {contentsOnly: true});
}
但是,这也会复制空行,并且在另一个工作表中找不到第一个空行
我试着使用这样的代码
function moveValuesOnly() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var source = ss.getRange("B10:AH13");
var destSheet = ss.getSheetByName("Test");
destSheet.appendRow(source.getValues()[0]);
}
这只复制一行,我不能复制到另一页的某一列,它总是以“a”开头
我对编码不在行,如果有人能帮我,那就太棒了
简言之,我需要的功能必须
- 复制选定的值范围而不设置格式
- 不复制空行
- 粘贴到其他工作表中的第一个可用空行
- 调整开始将复制的数据粘贴到的列
- 将以前的数据保留在表2中(新数据不会覆盖任何内容)
- 函数可以无限重复,新数据总是添加到表2中下面的空行中
这几乎是完美的,但我想要的是能够反复运行函数,并且每次都应该在现有数据下面插入副本。基本上,目标工作表应该是“数据库”,而原始工作表是一个不断变化的“源表”。我想将值从源(表1)加载到持久表(表2)。欢迎您将其修改为您的心形内容。遗憾的是,如果我知道如何正确执行此操作,我就不会在这里向社区寻求帮助,而是一开始就这样做:(如果你想学习,那么你就必须尝试。如果你不想尝试,那么你就不是社区的一员。我不是程序员,我不知道如何编码,我也不想学习。我来这里是为了帮助,而不是为了别人的判断。如果你不想帮助,就不要,但我不明白你为什么要在这里屈尊。我知道努伊内利只是向人们寻求帮助。
function copyRange(){
const ss=SpreadsheetApp.getActive();
const srcrg = 'Sheet1!B3:J10';
const torg = 'Sheet2!B12';
const desrg=ss.getRange(torg);
const row=desrg.getLastRow();
const col=desrg.getColumn();
const dessh=desrg.getSheet();
const src=ss.getRange(srcrg).getValues();
let cnt=0
src.forEach((r,i)=>{
if(r.join("")!="") {
dessh.getRange(row+1+cnt++,col,1,r.length).setValues([r]);
}
});
}