С помощью Google Sheets переместите данные из одной электронной таблицы в другую после последней строки - PullRequest
0 голосов
/ 03 июля 2018

Этот код работает как есть, но он также добавляет пустые строки - если имеется 4 строки с данными и 4 пустых строки, сценарий добавляет 4 пустых строки после копирования данных на новый лист.

Мне нужно только скопировать строку с данными, а не добавлять пустые строки на новый лист.

    function saveToData() {
       var ss, s, r, v, target,ts,tss;
       ss = SpreadsheetApp.getActive();
       s = ss.getSheetByName('Entry');
    if (s.getRange(3, 1).getValue()) {
       r = s.getDataRange()
        .offset(2, 0, s.getLastRow()-1,12);
       v = r.getValues();
       r.clear()
     tts = SpreadsheetApp.openById('10_XEaQiR71QN_90nIIIvDAU6un1KuOhi9-- 
     AVVtk5FI'); destination ID
     ts = tts.getSheetByName('Data');destination  Sheet 
     tab name
    ts.getLastRow()+1
    .setValues(v);



  }


 }  

1 Ответ

0 голосов
/ 05 июля 2018

Я мог бы понять, что вы хотите сделать, следующим образом.

Вы хотите переместить значения «A3: L» для «Sheet1» (Запись) в последнюю строку «Sheet2» (Данные), если значение «A3» существует.

Если это правильно, как насчет этой модификации?

Очки модификации:

  • Использовал «A3: L» для диапазона для получения значений.
  • Удалены пустые строки из значений «A3: L».
  • Поместите значения на лист «Данные», используя setValues().

Модифицированный скрипт:

function saveToData() {
  var ss, s, r, v, target,ts,tss;
  ss = SpreadsheetApp.getActive();
  s = ss.getSheetByName('Entry');
  if (s.getRange(3, 1).getValue()) {
    r = s.getRange("A3:L"); // Modified
    v = r.getValues().filter(function(e){return e.filter(String).length > 0}); // Modified
    r.clear();
    tts = SpreadsheetApp.openById('10_XEaQiR71QN_90nIIIvDAU6un1KuOhi9--AVVtk5FI'); // destination ID
    ts = tts.getSheetByName('Data'); // destination Sheet tab name
    ts.getRange(ts.getLastRow()+1, 1, v.length, v[0].length).setValues(v); // Modified
  }
}

Другой шаблон:

Вы также можете использовать этот скрипт.

function saveToData3() {
  var ss, s, r, v, target,ts,tss;
  ss = SpreadsheetApp.getActive();
  s = ss.getSheetByName('Entry');
  if (s.getRange(3, 1).getValue()) {
    tts = SpreadsheetApp.openById('10_XEaQiR71QN_90nIIIvDAU6un1KuOhi9--AVVtk5FI'); // destination ID
    ts = tts.getSheetByName('Data'); // destination Sheet tab name
    s.getRange("A3:L").moveTo(ts.getRange(ts.getLastRow()+1, 1)); // Added
  }
}

Примечание:

  • Этот скрипт изменил ваш скрипт. Поэтому, пожалуйста, будьте осторожны с идентификатором и названием листа.

Ссылка:

Если это не то, что вы хотите, пожалуйста, скажите мне. Я хотел бы изменить его.

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