如何将数据从工作表1移至工作表2,以及如何将工作表1数据附加到旧的工作表2数据之上

时间:2019-10-15 09:27:08

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

我在将数据从s = ss.getSheetByName('Last Seven Days');追加到ts = tss.getSheetByName('History');的顶部时遇到问题。我在该区域的XP值很低,因此当我抬起头来时可能需要一些握力。

当前,我只能使用以下脚本使函数saveToHistory将“过去七天”的数据追加到“历史记录表”的底部:

function saveToHistory() {
  var ss, s, r, v, target,ts,tss;
  ss = SpreadsheetApp.getActive();
  s = ss.getSheetByName('Last Seven Days');
  if (s.getRange(2, 1).getValue()) {  
    tss = SpreadsheetApp.getActive();
    ts = tss.getSheetByName('History'); // destination Sheet tab name
    s.getRange("A2:W").moveTo(ts.getRange(ts.getLastRow()+1, 1)); // Added
  }
}

是否有一个.getFirstRow?或有什么效果?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式进行操作:

  1. 获取最近7天的数据var lastSevenDays = sheet1.getValues();
  2. 从历史记录表var history = sheet2.getValues();中获取数据
  3. 清除历史记录表sheet2.clear();
  4. 将历史记录表中的数据连接到最近7天lastSevenDays.concat(history);
  5. 将合并的数据写回到工作表。 sheet2.setValues(lastSevenDays);

您的最终代码如下:

(假设两个表上都有标题并且数据的宽度相同)

function moveToHistory() {
  var ss = SpreadsheetApp.getActive();
  var lastSevenDays = ss.getSheetByName("Last Seven Days");
  var history = ss.getSheetByName("History");

  var historyDataWithoutHeader = history.getDataRange().getValues();
  historyDataWithoutHeader.shift(); //This removes the first row (the header)

  var finalData = lastSevenDays.getDataRange().getValues().concat(historyDataWithoutHeader);

  history.getRange(1, 1, finalData.length, finalData[0].length).setValues(finalData);
}

希望这会有所帮助!