@Graun

Как вырезать данные из Таблицы со второй строки и вставить их в другой лист?

Как вырезать данные из Таблицы со второй строки и вставить их в другую Таблицу?

Код ниже хорошо работает, но он добавляет данные к уже существующим. Что нужно сделать чтобы перезаписать существующие данные начиная со второй строки?

/**
 *
 */
function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('Custom menussss')
    .addItem('Copy to logs', 'CopyTabList')
    .addToUi();
}

/**
 *
 */
function CopyTabList() {
  var sss = SpreadsheetApp.openById('Id');
  var ss = sss.getSheetByName('Sheet1');

  var from = SpreadsheetApp.getActiveSheet();
  var fromValues = from.getDataRange().getValues();
  var fromData = fromValues

  var tss = SpreadsheetApp.openById('Id');
  var ts = tss.getSheetByName('Sheet3');

  SpreadsheetApp.getActive().getSheetByName('Sheet3') ||
    SpreadsheetApp.getActive().insertSheet('Sheet3');

  ts.getRange(ts.getLastRow() + 1, 1, fromData.length, fromData[0].length)
    .setValues(fromData);
}
  • Вопрос задан
  • 343 просмотра
Решения вопроса 1
oshliaer
@oshliaer Куратор тега Google Apps Script
Google Products Expert
Ну, есть прям несколько способов. Какой выбрать - дело непростое. Начните со слайса

function copyTabList() {
  var from = SpreadsheetApp.getActiveSheet();
  var fromValues = from.getDataRange().getValues();
  var fromData = fromValues.slice(1);

  var tss = SpreadsheetApp.openById('Id');
  var ts = tss.getSheetByName('Sheet3');

  ts.getDataRange()
    .offset(1, 0)
    .clearContent()
    .getRange(2, 1, fromData.length, fromData[0].length)
    .setValues(fromData);
}


А еще есть вариант с offset (я стал к нему склоняться из-за скорость работы)

function copyTabList() {
  var from = SpreadsheetApp.getActiveSheet();
  var fromValues = from
    .getDataRange()
    .offset(1, 0)
    .getValues();
  var fromData = fromValues;

  var tss = SpreadsheetApp.openById('Id');
  var ts = tss.getSheetByName('Sheet3');

  ts.getDataRange()
    .offset(1, 0)
    .clearContent()
    .getSheet()
    .getRange(2, 1, fromData.length, fromData[0].length)
    .setValues(fromData);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы