Как переместить данные с листа 1 на лист 2 и добавить данные листа 1 поверх старых данных листа 2 - PullRequest
1 голос
/ 15 октября 2019

У меня проблема с получением данных из s = ss.getSheetByName('Last Seven Days'); для добавления в начало ts = tss.getSheetByName('History');. Мой xp в этой области очень низок, поэтому, возможно, мне понадобится немного подержать руки, пока я обдумываю его.

В настоящее время я могу только заставить свою функцию saveToHistory добавить данные из 'Last Seven Days' внижняя часть «Листа истории» с приведенным ниже сценарием:

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 голосов
/ 15 октября 2019

Вы можете сделать это следующим образом:

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

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...