Проблемы с автоинкрементом в Листах, основанные на редактировании / отправке формы - PullRequest
0 голосов
/ 21 сентября 2019

Очень новый для скрипта Google Apps здесь.Я заимствовал некоторый код для этой функции присвоения номера счета из предыдущего поста.Намерение состоит в том, чтобы автоинкрементировать поле идентификатора в листах, которые получают представления из формы.Я также предоставил поле EditURL, чтобы пользователи могли легко возвращаться и редактировать записи в форме.Триггер запускается при отправке формы для этого.Если они редактируют ранее существующую запись, то последняя запись в списке увеличивается на основе кода.(ПЛОХО) Я попытался вставить то, что, как я думал, было бы правильным оператором IF, чтобы оценить, была ли эта последняя ячейка пустой первой, но, похоже, это ничего не делает.На самом деле, вторая часть: {

nextCell.setValue(maxInColumn+1)
  }

вообще не запускается в этот момент.Если я закомментирую if, это вернется к предыдущему поведению.
Не уверен, как заставить это делать то, что мне нужно ... надеюсь, что у кого-то есть идея.Вот код

... был взломан немного.

function assignInvoiceNumber() {
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheets()[0];
  var row =  SpreadsheetApp.getActiveSheet().getActiveCell().getRow();

 var lastRow = sheet.getLastRow();
 var lastColumn = sheet.getLastColumn();
 var EmptyString = '';
//create an array of the invoice numbers already created 
 var colArray = sheet.getRange(2, lastColumn-3, lastRow-1, 1).getValues();

//sort the array values to find max
 var maxInColumn = colArray.sort(function(a,b){return b-a})[0][0];

 var nextCell = sheet.getRange(lastRow, lastColumn-3);


//assign the max+1 to the next entry
  if (nextCell == "") { 
  nextCell.setValue(maxInColumn+1)
  };


}

С уважением, Gsmo

1 Ответ

0 голосов
/ 21 сентября 2019

Попробуйте это:

function assignInvoiceNumber() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var row =  SpreadsheetApp.getActiveSheet().getActiveCell().getRow();
  var lastRow = sheet.getLastRow();
  var lastColumn = sheet.getLastColumn();
  var EmptyString = '';
  var colArray = sheet.getRange(2, lastColumn-3, lastRow-1, 1).getValues();
  var maxInColumn = colArray.map(function(r){return r[0]}).sort(function(a,b){return b-a})[0];
  var nextCell = sheet.getRange(lastRow, lastColumn-3);
  if (nextCell == "") { 
    nextCell.setValue(maxInColumn+1)
  };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...