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

Javascript Google sheets脚本将数据集从一个工作表复制到工作表顶部的另一个工作表(仅值),javascript,excel,google-apps-script,google-sheets,Javascript,Excel,Google Apps Script,Google Sheets,我有一项任务要求我将数据从一张工作表移动到另一张工作表(很像日志)。我更喜欢每次添加更多数据时都将其放在日志表的顶部。假设工作表“索引生成”的前3行有数据。“索引生成”中的三行需要添加到工作表“索引”的顶部,而不需要过度扶正或仅添加三行以上 感谢您可能提供的任何帮助 这是当前状态,但在object SpreadsheetApp中找不到函数getActiveSpreadSheet function IndexCopy() { var app = SpreadsheetApp; var ss

我有一项任务要求我将数据从一张工作表移动到另一张工作表(很像日志)。我更喜欢每次添加更多数据时都将其放在日志表的顶部。假设工作表“索引生成”的前3行有数据。“索引生成”中的三行需要添加到工作表“索引”的顶部,而不需要过度扶正或仅添加三行以上

感谢您可能提供的任何帮助

这是当前状态,但在object 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)
};

试着这样做:

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);
}
看看

试试看: 首先必须选择要从索引生成表中移动的行数,然后运行此函数

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);
}
函数IndexCopy(){
var ss=SpreadsheetApp.getActive();
var igSht=ss.getSheetByName(“索引生成”);
var igRg=igSht.getActiveRange();
var igA=igRg.getValues();
var iSht=ss.getSheetByName('Index');

对于(var i=0;我的答案对您有帮助吗?到工作表有几种插入行的方法。在这个范围内有几种读取和写入数据的方法。编写代码时,最好使用引用文档,因为文档不断变化,变化通常会先进入文档,然后再进入“内容辅助”“。此时,您的代码将无法工作,错误太多,范围尚未定义。正如@Cooper所说,有许多方法可以在电子表格中插入数据。顺便说一句,SpreadsheetApp.getActiveSpreadsheet()应该行。谢谢你的方法@cooper@jsmith正在与我合作。将发布最终有效的代码!我不知道array.splice!这非常有用。我收到一个错误“电子表格”未定义。想法?这只是伪代码。你必须设置范围并使用SpreadsheetApp而不是电子表格。但同样,这只是伪代码,所以你必须找到自己的其他东西。干杯汉克斯JSmith!我正在尝试完善它。请看我文章的编辑。你能在评论中发送电子表格的链接吗删除它之后