在复制粘贴之前检查值是否存在

时间:2019-05-18 15:39:30

标签: google-apps-script google-sheets

我刚接触Google脚本时,有人可以帮忙吗?

我有这个简单的代码,可以将值从一张纸复制到另一张纸

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 :(得分:0)

您可以使用isBlank()

if (destRange.isBlank()) source.copyTo (destRange, {contentsOnly: true});

答案 1 :(得分:0)

我通常使用两种不同的功能将Google表格列与单个值进行比较。

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
       };

如果值在数组中,我将比较这两个元素,然后得到true,否则返回false。

这些功能的来源 https://gist.github.com/MauricioMoraes/225afcc9dd72acf1511f