如何从下拉列表中覆盖其ID处的值?

时间:2018-10-28 13:56:01

标签: google-sheets

我正在尝试编写一个脚本,根据ID将数据放在特定行中。 我已经有了:

 function copy(){ 

  var tabelle1=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  var tabelle2=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2 ");

  tabelle2.getRange(3,7).copyTo(tabelle1.getRange(tabelle1.getLastRow()+1,1));
  tabelle2.getRange(13,4).copyTo(tabelle1.getRange(tabelle1.getLastRow()+0,2));
}

image for the code

现在我的问题是在用脚本复制行之前,如何删除所有具有相同ID(1)的行。 (见图片) 或者,如果我的列表中每个ID仅包含一次,该如何覆盖该值?

1 个答案:

答案 0 :(得分:0)

下面应该这样做。您的代码在工作表引用中不正确。我使用setValue而不是copyTo,因为您需要选择要传递给readRows函数的值,它看起来更干净。

function copy(){ 
  var tabelle1=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  var tabelle2=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
  var sel=tabelle1.getRange(3,7).getValue()
   readRows(sel)
  tabelle2.getRange(tabelle2.getLastRow()+1,1).setValue(sel);
  var tm=tabelle1.getRange(13,4).getValue()
  tabelle2.getRange(tabelle2.getLastRow()+0,2).setValue(tm);
}
function readRows(sel) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
  var lr=sheet.getLastRow()
  var values = sheet.getRange(1,1,lr,2).getValues();
  var rowsDeleted = 0;
  for (var i = 0; i <= values.length-1; i++) {
     var row = values[i][0];
     if (row == sel) {
      sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
      rowsDeleted++;
    }
  }
};