Проверьте, существует ли значение перед копированием - PullRequest
0 голосов
/ 18 мая 2019

Может кто-нибудь помочь, если я новичок в Google Scripts.

У меня есть этот простой код, который копирует значения с одного листа на другой

function copyrevision() {
  var ss = SpreadsheetApp.getActiveSpreadsheet ();
  var destSheet = ss.getSheetByName("Fallas Tecnicas");

  //DATE
  var source = ss.getRange ("D4");
  var destRange = destSheet.getRange(destSheet.getLastRow()+1,1);
  source.copyTo (destRange, {contentsOnly: true});

  //REPORT NUMBER
  var source2 = ss.getRange ("C4");
  var destRange = destSheet.getRange(destSheet.getLastRow(),2);
  source2.copyTo (destRange, {contentsOnly: true});

  //OBSERVACION
  var source6 = ss.getRange ("E49");
  var destRange = destSheet.getRange(destSheet.getLastRow(),6);
  source6.copyTo (destRange, {contentsOnly: true});
}

Мне нужно, чтобы эту операцию выполняли только в том случае, если значение номера отчета не существует в столбце 2 листа назначения.

Как это можно сделать?

Ответы [ 2 ]

0 голосов
/ 19 мая 2019

Я обычно использую две разные функции для сравнения столбца Google Sheet с одним значением.

function isInArray(value, array) {
  return array.indexOf(value) > -1;
}

Прочитайте в столбце, который будет представлен в виде двумерного массива, поэтому я сглаживаю его, чтобы его было проще сравнивать с одним значением.

  function flatten(arrayOfArrays){
    return [].concat.apply([], arrayOfArrays);
  }

Сначала прочитайте номера отчетов в этом столбце

var reportNumbers = ss.getRange("C:C").getValues();

Затем я читаю значение, которое сравниваю со сплющенным массивом.

var valueToCompare = ss.getRange("C4").getValue();
    if (isInArray(valueToCompare, flatten(reportNumbers)) == true){
         // value is in array
       };

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

Источники для этих функций https://gist.github.com/MauricioMoraes/225afcc9dd72acf1511f

0 голосов
/ 18 мая 2019

Вы можете использовать isBlank():

if (destRange.isBlank()) source.copyTo (destRange, {contentsOnly: true});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...