Google工作表脚本将数据集从一个工作表复制到另一个工作表(仅值)

时间:2018-08-20 18:01:53

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

我有一项任务,要求我将数据从一张纸移到另一张纸(很像日志)。我希望每次添加更多数据时,它将添加到日志表的顶部。假设工作表“索引生成”在前3行中有数据。需要将“索引生成”中的三行添加到工作表“索引”的顶部,而不能过度调整或添加的行数不能超过三行。

感谢您可能提供的帮助!

这是当前状态,但是在对象SpreadsheetApp中找不到函数getActiveSpreadSheet。

function IndexCopy() {
  var app = SpreadsheetApp;
  var ss = app.getActiveSpreadSheet();
  var indexGen = ss.getSheetByName('Index Generation')
  var index = ss.getSheetByName('Index');
  var Rows = indexGen.range.getValues();
  var array = sheet.range.getValues();
array.splice(0, 0, Rows);
  // add three rows to sheet.range then 
index.range.setValues(array)
};

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  // Or DocumentApp or FormApp.
  ui.createMenu('Custom Menu')
      .addItem('First item', 'indexCopy')
      .addToUi();
}

function indexCopy()
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var src = ss.getSheetByName('source');
  var dest = ss.getSheetByName('destination');
  var srcDatas = src.getDataRange().getValues();
  var destDatas = dest.getDataRange().getValues();
  var i = srcDatas.length - 1
  while (i >= 0)
    destDatas.splice(1, 0, srcDatas[i--]);
  dest.getRange("A1:B" + destDatas.length).setValues(destDatas);
}

看看this documentation

答案 1 :(得分:0)

尝试一下: 您首先必须从“索引生成表”中选择要移动的行数,然后运行此功能。

function IndexCopy() {
  var ss=SpreadsheetApp.getActive();
  var igSht=ss.getSheetByName('Index Generation');
  var igRg=igSht.getActiveRange();
  var igA=igRg.getValues();
  var iSht=ss.getSheetByName('Index');
  for(var i=0;i<igA.length;i++){
    iSht.insertRowBefore(1);
    iSht.getRange(1,1,1,igA[i].length).setValues([igA[i]]);
  }
  igSht.deleteRows(1, igA.length);
}