Добавление нескольких строк при обновлении из одной электронной таблицы в другую - PullRequest
0 голосов
/ 10 июля 2019
function clearData() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var source_sheet = ss.getSheetByName("sheet");
  var source_range = source_sheet.getRange("2:21");
  var values = source_range.getValues();


  var target = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1kNzG4IQrI9TSlGzpIjp_84uWzoraVDSLPyAS-RIJPh4/edit#gid=1047694951");
  var target_sheet = target.getSheetByName("Deposits");
  var target_range = target_sheet.getRange(2,1,values.length,values[19].length);// use the array size to define the range because the target column A is not necessarily the same size at this time.
  target_range.setValues(values);
}

Я создал эту функцию для своего листа Google, однако он обновляет те же 20 строк.Для этого мне нужно обновить строки, затем у меня есть функция очистки, которая очищает одну электронную таблицу, затем добавляет еще 20 строк под первые 20 строк и т. Д., Что-то вроде функции добавления строки для 20 строк за раз.

Однако любой код, который я пробую, не работает.

Код, который у меня есть, прикреплен.

Может ли кто-нибудь помочь?

1 Ответ

2 голосов
/ 10 июля 2019

Ваша проблема в том, что ваш код всегда обновляет одни и те же 20 строк.Причина находится в этой строке: target_sheet.getRange(2,1,values.length,values[19].length)

Ваш целевой диапазон ВСЕГДА начинается со строки № 2, поэтому он будет перезаписывать все, что уже существует в строке № 2 и ниже.Вместо этого вы хотите, чтобы данные копировались в строку, следующую за «LastRow» (что бы это ни было).

Попробуйте это:

var targetLR = target.getLastRow();
var target_range = target_sheet.getRange(targetLR+1,1,values.length,values[19].length);

Два изменения здесь:

  1. getLastRow() возвращает позицию последней строки с содержимым.

  2. Поэтому мы просто добавляем «1» к этому значению («targetLR + 1»), чтобы определить начало target_range в следующей строке.

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