Ссылка на мой лист: https://docs.google.com/spreadsheets/d/1gkWCU0fHotORi-urOfuHjGGiqrnYcdtZQ9bZhm7XLIk/edit?usp=sharing
Вопрос: Как исправить проблему с редактированием при удалении дат или снятии флажка, не затрагивая другие столбцы.(см. изображения)
Как работает кнопка «Функции»:
Панель меню: Функция > Вставить новый столбец Вставить какстолько столбцов, сколько мне нужно, манипулируя сценарием.
Как работает мой сценарий AutoTimeStamp: Как только флажки установлены (столбец C), даты автоматически применяются к столбцу D.
Как работает мой скрипт «Копировать»: Как только Вставить новый столбец активируется, он создает копию столбцов C и D слева направо.Это также применяет функцию TimeStamp к каждому вновь созданному столбцу.
Функциональная кнопка :
Недавно созданные столбцы
Нажатие на чекбоксы и автоматическое определение даты успешно
Ошибка при удалении дат
Ошибка в последнем столбце
Здесь Вставить новый столбец Функция:
var ss = SpreadsheetApp.getActive();
function onOpen() {
var menu = [{name:"Insert New Columns", functionName:"addColumn"}];
ss.addMenu("Functions", menu);
}
function addColumn() {
var sh = ss.getActiveSheet(), lCol = sh.getLastColumn();
var lRow = sh.getLastRow(), range = sh.getRange(1,lCol-1,lRow,2);
sh.insertColumnsAfter(lCol,10);
var newRange = sh.getRange(1,lCol+1,lRow,10);
var columnWidths = SpreadsheetApp.CopyPasteType.PASTE_COLUMN_WIDTHS
range.copyTo(newRange);
range.copyTo(newRange,columnWidths,false);
newRange.setFormulas(newRange.getFormulas());
}
Вот сценарий AutoTimeStamp :
var COLUMNTOCHECK = 3;
var DATETIMELOCATION = [0, 1];
var SHEETNAME = 'Training Dash'
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
if( sheet.getSheetName() == SHEETNAME ) {
var selectedCell = ss.getActiveCell();
if( selectedCell.getColumn() >= COLUMNTOCHECK) {
var dateTimeCell = selectedCell.offset(DATETIMELOCATION[0],DATETIMELOCATION[1]);
dateTimeCell.setValue(new Date());
}
}
}
Это скрипт Copy рядом с некоторыми макросами.
function Copy() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getActiveSheet().insertColumnsAfter(spreadsheet.getActiveRange().getLastColumn(), 2);
spreadsheet.getActiveRange().offset(0, spreadsheet.getActiveRange().getNumColumns(), spreadsheet.getActiveRange().getNumRows(), 2).activate();
var sheet = spreadsheet.getActiveSheet();
sheet.getRange(1, spreadsheet.getCurrentCell().getColumn(), sheet.getMaxRows(), 1).activate();
sheet = spreadsheet.getActiveSheet();
sheet.getRange(1, spreadsheet.getCurrentCell().getColumn() - 2, sheet.getMaxRows(), 2).copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
};
function UntitledMacro() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getActiveSheet().insertColumnsAfter(spreadsheet.getActiveRange().getLastColumn(), 2);
spreadsheet.getActiveRange().offset(0, spreadsheet.getActiveRange().getNumColumns(), spreadsheet.getActiveRange().getNumRows(), 2).activate();
var sheet = spreadsheet.getActiveSheet();
sheet.getRange(1, spreadsheet.getCurrentCell().getColumn() - 2, sheet.getMaxRows(), 2).copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
sheet = spreadsheet.getActiveSheet();
sheet.getRange(1, spreadsheet.getCurrentCell().getColumn(), sheet.getMaxRows(), 2).activate();
sheet = spreadsheet.getActiveSheet();
sheet.getRange(1, spreadsheet.getCurrentCell().getColumn() - 2, sheet.getMaxRows(), 2).copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_COLUMN_WIDTHS, false);
};
function UntitledMacro1() {
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
sheet.getRange(1, spreadsheet.getCurrentCell().getColumn(), sheet.getMaxRows(), 2).activate();
spreadsheet.getActiveSheet().insertColumnsAfter(spreadsheet.getActiveRange().getLastColumn(), 2);
spreadsheet.getActiveRange().offset(0, spreadsheet.getActiveRange().getNumColumns(), spreadsheet.getActiveRange().getNumRows(), 2).activate();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Sheet15'), true);
spreadsheet.getCurrentCell().offset(-2, 0, 17, 2).activate();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Training Dash'), true);
spreadsheet.getCurrentCell().activate();
spreadsheet.getRange('Sheet15!A1:B17').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
sheet = spreadsheet.getActiveSheet();
sheet.getRange(1, spreadsheet.getCurrentCell().getColumn(), sheet.getMaxRows(), 2).activate();
sheet = spreadsheet.getActiveSheet();
sheet.getRange(1, spreadsheet.getCurrentCell().getColumn() - 2, sheet.getMaxRows(), 2).copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_COLUMN_WIDTHS, false);
};
function UntitledMacro2() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('E:N').activate();
spreadsheet.getActiveSheet().insertColumnsBefore(spreadsheet.getActiveRange().getColumn(), 10);
spreadsheet.getActiveRange().offset(0, 0, spreadsheet.getActiveRange().getNumRows(), 10).activate();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Sheet15'), true);
spreadsheet.getRange('A1:B17').activate();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Training Dash'), true);
spreadsheet.getRange('E1:N1').activate();
var currentCell = spreadsheet.getCurrentCell();
spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.DOWN).activate();
currentCell.activateAsCurrentCell();
spreadsheet.getRange('Sheet15!A1:B17').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
spreadsheet.getRange('E:N').activate();
spreadsheet.getRange('O1:P16').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_COLUMN_WIDTHS, false);
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Sheet15'), true);
spreadsheet.getActiveSheet().hideSheet();
};