如何将范围从一个工作表复制到另一个工作表中的范围,然后重复复制到下一行

时间:2017-12-21 01:50:18

标签: javascript google-apps-script google-sheets

我正在寻找一个谷歌应用脚​​本,将一个单元格中的一系列单元格复制到另一个工作表,然后当用户更改第一个范围值时,将相同的范围(新值)复制到下一行中。第一。以下是我到目前为止的情况:

function copyToDatasheet() {

     var ss = SpreadsheetApp.getActiveSpreadsheet();
     var s1 = ss.getSheetByName('Mobile Form');
     var s2 = ss.getSheetByName('Data'); 

     s1.getRange('B2').copyTo(s2.getRange('P6'), {contentsOnly:true})
     s1.getRange('B4').copyTo(s2.getRange('Q6'), {contentsOnly:true})
     s1.getRange('B6').copyTo(s2.getRange('R6'), {contentsOnly:true})
     s1.getRange('B8').copyTo(s2.getRange('S6'), {contentsOnly:true})
     s1.getRange('B10').copyTo(s2.getRange('O6'), {contentsOnly:true})
}

所有这一切都是将s1范围复制到从第6行开始的s2范围,这是我希望它开始的方式,但在下一个条目中我希望它向下移动到第7行,依此类推。重置s1范围并输入新值,将它们复制到下一行中的s2,使它们在下次运行时动态向下移动。希望这是有道理的,我没有关于应用程序脚本的大量知识,所以如果可能的话,解释一些函数的作用会有所帮助。感谢任何人提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

当对Sheet1进行编辑时,

This will获得相同的数据范围。然后,所有这些数据将被附加到Sheet2。

function getMultipleValues(){

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Sheet1');

  var range = sheet.getRange(2,1,4,2); //getRange(starting row, starting column, ending row, ending column)
  var data = range.getValues();
  putMultipleValues(data)
}

function putMultipleValues(data){

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Sheet2');
  data.forEach(function(i){
    SpreadsheetApp.flush();
    sheet.appendRow(i)
  })
}

不要忘记设置触发器。在菜单中=>编辑=>当前项目的触发器。 enter image description here