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