@Graun

Как выполнить скрипт на всех листах таблицы?

Помогите подправить скрипт чтобы он выполнял все тоже самое но вырезал данные со всех листов выразил и вставлял в другую таблицу на лист "Sheet3"
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);
}
  • Вопрос задан
  • 339 просмотров
Пригласить эксперта
Ответы на вопрос 1
ProgrammerForever
@ProgrammerForever
Учитель, автоэлектрик, программист, музыкант
Можно получить список всех листов и проходить в цикле. Данные копировать так же, но при вставке менять номер строки (тут 2 заменить на (последнюю строку данных на листе + 1))
.getRange(2, 1, FromData.length, FromData[0].length)

Если хочется чтобы работало быстрее - то нужно формировать двумерный массив данных из всех, и потом за раз писать в ячейки. Просто при получении новой порции данных добавляйте построчно их в общий двумерный массив.
Ещё проще - использовать IMPORTRANGE() - там само всё подтягивается с другой таблицы. Если надо писать в столбец, можно использовать декларацию массива:
={1;2;3}
... выведет 1,2,3 в столбик. Замените цифры формулами с IMPORTRANGE() по количеству листов и получите автоматически то что хотите. Единственное НО - данные такие - только на чтение
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы