У меня уникальная ситуация. Я создаю низкотехнологичную систему управления работой. У меня есть лист «Рабочие задания», в котором каждая строка после заголовка содержит рабочее задание. Однако заказы на работу могут длиться несколько дней. Итак, мне нужен отдельный лист, который показывает каждую ежедневную задачу для каждого рабочего задания. Так, например, если заказ на работу от 1/12/17 до 1/14/17, я хочу автоматизировать создание трех строк на другом листе для представления каждого дня. Цель состоит в том, чтобы иметь возможность назначать бригады для каждой повседневной задачи.
Это то, что я написал до сих пор, но признаюсь, я не уверен, в чем ошибка (-ы) и близок ли я к этому. Я точно любитель.
В этом примере лист «Word Orders» является моим исходным листом, «Schedule» - моим целевым листом, AD и AE - столбцами с начальной и конечной датой, а AI - моим условным условием, ЕСЛИ «Да» для onEdit.
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var target = SpreadsheetApp.getActiveSpreadsheet()
var source_sheet = ss.getSheetByName("Work Orders");
var target_sheet = target.getSheetByName("Schedule");
var source_range = source_sheet.getActiveRange().getRow();
var startdate = source_sheet.getRange("AD"+(source_range));
var enddate = source_sheet.getRange("AE"+(source_range));
var duration = enddate - startdate + 1
var event = (source_sheet.getRange("AI"+(source_range));
var last_row = target_sheet.getLastRow();
var target_range = target_sheet.getRange("A"+(last_row+1)+":AJ"+(last_row+1));
if (source_sheet.getRange("AI"+(source_range)) == "Yes");
target_sheet.insertRowAfter(last_row);
source_range.copyTo(target_range);
}
Мне тоже не нужно, чтобы это был триггер onEdit (). У меня есть собственный пункт меню, который я мог бы использовать вместо него. Если бы я использовал эту опцию, мне больше не понадобилось бы условное «Да» в ИИ.
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('Triggers')
.addItem('Create Daily Task', 'CreateDailyTask')
.addToUi();
};
1-е редактирование:
Наконец, если есть способ, чтобы изменение даты в каждой вставленной строке указывало на то, что каждая из них отличается, это было бы вишенкой на торте.
2-е изменение:
Я также упомяну, хотя и не знаю, имеет ли это значение, что в моем исходном листе "Заказы на работу" есть сценарий, который автоматически сортирует его:
/**
* Automatically sorts the 30th column (not the header row) Ascending.
*/
function onEdit(event){
var sheet = event.source.getSheetByName("Work Orders");
var editedCell = sheet.getActiveCell();
var columnToSortBy = 30;
var tableRange = "A2:AJ"; // What to sort.
if(editedCell.getColumn() == columnToSortBy){
var range = sheet.getRange(tableRange);
range.sort( { column : columnToSortBy, ascending: true } );
}
}
Любая помощь приветствуется.