从一个工作表复制数据,将日期追加到行并粘贴

时间:2017-02-13 01:16:50

标签: google-apps-script google-sheets

我已经完成了一些阅读,但我对脚本的有限知识使得事情变得困难。我想:

  1. 从一张表中复制数据范围(C3:F20)
  2. 将该数据粘贴到新工作表中
  3. 在新工作表中,将新格式化的日期(DD / MM / YYYY)添加到新列中
  4. 我设法让1和2工作,但无法解决第3次问题。请参阅下面的当前脚本

    function Copy() {
     var sss = SpreadsheetApp.openById('ID#');
     var ss = sss.getSheetByName('Workout');
     var range = ss.getRange('C3:F20');
     var data = range.getValues();
    
     var tss = SpreadsheetApp.openById('ID#');
     var ts = tss.getSheetByName('Log');
     ts.getRange(ts.getLastRow()+1, 1, data.length, data[0].length).setValues(data);
    }
    

    我有什么:

    enter image description here

    我想要的是什么:

    enter image description here

3 个答案:

答案 0 :(得分:0)

试试这个。

function copy() {
  var s = SpreadsheetApp.getActiveSpreadsheet();
  var range = 'a1:d8';

  var sS = s.getSheetByName('Workout');
  var sRange = sS.getRange(range);
  var sRow1 = sRange.getRow();
  var sRow2 = sRange.getLastRow();
  var sCol1 = sRange.getColumn();
  var sCol2 = sRange.getLastColumn();

  var tS = s.getSheetByName('Log');
  sRange.copyValuesToRange(tS, sCol1, sCol2, sRow1, sRow2);

  var tRange = tS.getRange(sRow1, sCol2 + 1, sRow2 - sRow1 + 1, 1);
  var d = Utilities.formatDate(new Date(), 'GMT', 'dd/mm/yyyy');
  tRange.setValue(d);
}

答案 1 :(得分:0)

当使用具有“a2:d8”数据的样本表图像时,也可以编写以下脚本。此脚本从“Workout”中检索“a2:d8”的数据,并将数据复制到“Log”的最后一行的下一行。在复制数据之前,今天的日期将添加到数据中。

function Copy() {
  var ss = SpreadsheetApp.openById('ID#')
  var data = ss.getSheetByName('Workout').getRange('a2:d8').setNumberFormat('@').getValues();
  [i.push(Utilities.formatDate(new Date(), 'GMT', 'dd/MM/yyyy')) for each (i in data)];
  var s = ss.getSheetByName('Log');
  s.getRange(s.getLastRow() + 1, 1, data.length, data[0].length).setNumberFormat('@').setValues(data);
}

在此脚本中,数据将导入到数组中,并使用该数组处理数据。使用“setNumberFormat('@')”可以在不改变格式的情况下获得'd2:d8'的'00'。

我希望这会对你有所帮助。

答案 2 :(得分:0)

感谢您的帮助@Tanaike。这是最后的代码,稍微重命名。

function Copy() {
    var doc = SpreadsheetApp.openById('1SsE1KceJ9RqgKPBuneCSb-MaRQvSxIVJC8Bi-EUZ2os')
    var sheet1 = doc.getSheetByName('Workout');
    var range = sheet1.getRange(3, 3, sheet1.getLastRow() - 2,‌ 4);
    var data = range.setNumberFormat('@').getValues();
    [i.push(Utilities.formatDate(new Date(), 'GMT', 'dd/MM/yyyy')) for each (i in data)];
    var sheet2 = doc.getSheetByName('Log');
    sheet2.getRange(sheet2.getLastRow() + 1, 1, data.length, data[0].length).setNumberFormat('@').setValues(data);
}