Если у меня есть лист с 20 отдельными сценариями onEdit (), возникнут ли какие-либо проблемы, если два уникальных редактора будут сделаны в одно и то же время разными пользователями?Более конкретно:
1) Какое временное разрешение для записи редактируется?Например, вероятность того, что два человека будут редактировать в одну и ту же миллисекунду, очень мала, но, возможно, в течение одной секунды не может быть невероятно невероятной.Если два человека редактируют в одну и ту же секунду, не сможет ли он распознать их как отдельные правки?Или он может четко распознавать каждое редактирование как уникальное событие независимо от того, насколько близко они произошли?
2) Если один сценарий onEdit () запущен и не завершает до того, как произойдет другое редактирование, произойдетэто вызывает ошибку во втором редактировании для правильной оценки?
3) У меня есть около 20 скриптов, работающих на листе с примерно 20 вкладками и около 7 пользователей на нем в любой момент времени.Есть ли какие-либо другие проблемы, которые вы предвидите, из-за которых некоторые скрипты onEdit () не будут работать?
Мой скрипт проверяет, было ли выполнено редактирование в столбце x на листе x, и, если это так, копирует его на следующий лист и удаляет строку с первого листа.Это в настоящее время терпит неудачу около 30% времени.Я не знаю почему.В прошлом этого не было.
Мой код выглядит следующим образом:
function onEdit(e){
var edited_range = e.range;
var edited_row = edited_range.getRow();
var activeSheet = e.source.getActiveSheet();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var source_sheet = ss.getSheetByName("N.Arb Pitches");
var target_sheet = ss.getSheetByName("N.Arb In Progress");
var last_row = target_sheet.getLastRow();
var range_values = target_sheet.getRange("A1:A").getValues();
var range_length = range_values.filter(String).length + 1;
var target_range = target_sheet.getRange(range_length,1);
if (activeSheet.getName() == "N.Arb Pitches") {
if (edited_range.getColumn() == 13) {
if (edited_range.getValue().toLowerCase() == "yes") {
target_sheet.insertRowAfter(last_row);
source_sheet.getRange(edited_row,1,1,12).copyTo(target_range);
source_sheet.deleteRow(edited_row) }}};
}
В каждом проекте есть только 1 функция onEdit (e), и у меня так много проектовв моем листе.Каждый проект имеет функцию, подобную приведенной выше, но с измененными именами листов.