В качестве альтернативы использованию Arrayformula у меня есть следующий сценарий, который в основном автоматически увеличивает ячейки в определенном столбце c для создания уникального идентификатора
Единственная проблема, с которой я сталкиваюсь, это что, если 2 пользователя установят флажок в одно и то же время (что я пробовал сам даже с задержкой в полсекунды), он дает им одинаковый идентификатор, что является проблемой для следующей задачи.
Есть ли какие-либо уловка (или альтернативный подход), чтобы обойти эту небольшую проблему? На данный момент я просто использую условное форматирование, чтобы выделить любые дубликаты идентификаторов, чтобы помочь пользователям (т.е. если пользователь видит идентификатор красным, он удаляет его, а затем снова ставит флажок, чтобы получить новый идентификатор)
Спасибо.
СКРИПТ:
function onEdit(e) {
var watchColumns = [1]; //when checkbox is ticked, auto-numbering will be triggered
var autoColumn = 3;
var headerRows = 1;
var watchSheet = "Sheet1";
var range = e.range;
var sheet = range.getSheet();
if (e.value !== undefined && sheet.getName() == watchSheet) {
if (watchColumns.indexOf(range.getColumn()) > -1) {
var row = range.getRow();
if (row > headerRows) {
var autoCell = sheet.getRange(row, autoColumn);
if (!autoCell.getValue()) {
var data = sheet.getDataRange().getValues();
var temp = 1;
for (var i = headerRows, length = data.length; i < length; i++)
if (data[i][autoColumn - 1] > temp)
temp = data[i][autoColumn - 1];
autoCell.setValue(temp + 1);
}
}
}
}
}