在SpreadSheet中自动查找列的MAX值

时间:2017-10-06 15:16:11

标签: google-apps-script google-sheets

我目前正在使用电子表格,其中包含ID为ID的列。我想在有人添加新行并将其放入正确的单元格时,在此列中找到MAX值+1。有什么想法可以自动完成吗?唯一的用户交互应该是添加新行。让我给你看一个截图,以澄清我的问题。

Screenshot

2 个答案:

答案 0 :(得分:0)

试试这个:

创建一个onChange可安装触发器并将其设置为此功能,如下所示。

function onAddRow(e) 
{
  if(e.changeType=='INSERT_ROW')
  {
    //Logger.log('here');
    var ss=SpreadsheetApp.getActive();
    var sh=ss.getActiveSheet();
    var rg=sh.getDataRange();
    var vA=rg.getValues();
    var max='-1';
    for(var i=1;i<vA.length;i++)
    {
      if(vA[i][12]>max)
      {
        max=vA[i][12];
      }
    }
    var arg=sh.getActiveRange();
    var row=arg.getRow();
    //Logger.log(row);
    sh.getRange(row,13).setValue(max + 1);
  }
}

enter image description here

答案 1 :(得分:0)

我通过此设置(在我的情况下,ID为“ A”列)解决了该问题:

function myFunction() {

  var column = 0;
  var HEADER_ROW_COUNT = 1;

  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var worksheet   = spreadsheet.getSheetByName("Задачи");
  var rows        = worksheet.getDataRange().getNumRows();
  var vals        = worksheet.getSheetValues(1, 1, rows, 1);

  var max = 0;

  for (var row = HEADER_ROW_COUNT; row < vals.length; row++) {  
    var id = vals[row][column];
    if (id > max) {
        max = id;
    }
  }
  for (var row = HEADER_ROW_COUNT; row < vals.length; row++) {  
    var id = vals[row][column];
    if (id.length === 0) {
      max = max+1;
      worksheet.getRange(row+1, column+1).setValue(max);        
    }
  }  
}