У меня есть следующий скрипт Google Apps «Добавить строку», который срабатывает, когда пользователь нажимает кнопку:
//Add Row to Additional Duties Sheet
function AddRowtoAdditionalDutiesSheet() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('3:3').activate();
spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
spreadsheet.getRange('A4:X4').activate();
spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('A3:X4'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
spreadsheet.getRange('3:3').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, commentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('G4:K4').activate();
spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('G3:K4'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
spreadsheet.getRange('F4').activate();
spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('F3:F4'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
spreadsheet.getRange('R4').activate();
spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('R3:R4'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
spreadsheet.getRange('X4').activate();
spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('X3:X4'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
spreadsheet.getRange('A3').activate();
}
Это копия моего листа со столбцами от A до X.
Сценарий копирует формулы в определенных ячейках из строки 4 в строку 3 после того, как строка была вставлена. Проблема в том, что много пользователей заполняют лист, и иногда формула не вставляется в строку 3. После долгих наблюдений я считаю, что это потому, что 2 разных пользователя нажимают кнопку одновременно, и сценарий слишком медленно вставить формулу. Есть ли лучший способ написать сценарий, чтобы он работал быстрее?