Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将特定范围从一张图纸复制到另一张图纸中的第一个空行和特定列_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 将特定范围从一张图纸复制到另一张图纸中的第一个空行和特定列

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'; //

我使用GoogleSheets,我试图使用一个脚本,将某个范围从一个工作表(读取CSV文件)复制到另一个工作表的最后一行,但复制到某个列。 我也不想复制空值

所以我只需要从图纸上复制特定范围的值,如Sheet1!A5:D14,其中忽略空值,将其移动到不同工作表的第一个空行,但不是同一列(因此所有内容都向前移动到C-F列)

我可以用这个,把东西复制到一个特定的专栏:

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中下面的空行中
感谢所有提前花时间提供帮助的人:)

资料来源:

可乐 可乐 可乐 可乐 可乐 可乐6 可乐 可乐 可乐 可乐 10 21 14 11 6. 9 3. 11 9 2. 29 29 21 19 14 4. 24 11 1. 0 2. 11 25 2. 9 2. 1. 11 5. 29 3. 3. 24 18 28 6. 6. 20 19 23 4. 16 4. 17 25 14 8. 22 4. 15 26 15 7. 25 7. 2. 10 26 10 19 4. 18 6. 5. 18 27 2. 27 5. 0 15 5. 26 22 13 18 6. 27 28 24
这几乎是完美的,但我想要的是能够反复运行函数,并且每次都应该在现有数据下面插入副本。基本上,目标工作表应该是“数据库”,而原始工作表是一个不断变化的“源表”。我想将值从源(表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]);
    }
  });
}