Я пытаюсь скопировать данные из таблицы форм Google в более "интерфейсную" таблицу, используя скрипт.
Все работает в принципе нормально, за исключением того, что если я перезагружаю страницу более одного раза, некоторые данные каждый раз перезагружаются на несколько строк.
Первые 4 столбца копируются из таблицы " RAW "в" FRONT ", но последние 4 столбца просто отсортированы вместе с первыми 4. Это также те, которые" не прилипают "к своему аналогу в первых 4 столбцах.
проблема с флажками?
После первой перезагрузки (как это должно выглядеть):
После второй перезагрузки:
Лист RAW также выглядит странно ... почему форма Google вводит данные так далеко внизу?
function onOpen() {
fillSheet();
sortSheet();
colorize();
}
//fill FRONT sheet with data from RAW sheet
function fillSheet(){
//get active sheet
var sheet=SpreadsheetApp.getActiveSheet();
//align column 1
var fillRange_employee = sheet.getRange("FRONT!A4:A" + sheet.getLastRow());
var copyRange_employee = sheet.getRange("RAW!B2:B" + sheet.getLastRow());
//align column 2
var fillRange_task = sheet.getRange("FRONT!B4:B" + sheet.getLastRow());
var copyRange_task = sheet.getRange("RAW!C2:C" + sheet.getLastRow());
//align column 3
var fillRange_timestamp = sheet.getRange("FRONT!C4:C" + sheet.getLastRow());
var copyRange_timestamp = sheet.getRange("RAW!A2:A" + sheet.getLastRow());
//align column 4
var fillRange_priority = sheet.getRange("FRONT!D4:D" + sheet.getLastRow());
var copyRange_priority = sheet.getRange("RAW!D2:D" + sheet.getLastRow());
//style
copyRange_priority.setHorizontalAlignment("center");
copyRange_priority.setVerticalAlignment("center");
//copy-paste
copyRange_employee.copyTo(fillRange_employee);
copyRange_task.copyTo(fillRange_task);
copyRange_timestamp.copyTo(fillRange_timestamp);
copyRange_priority.copyTo(fillRange_priority);
}
//colorize "priority" column
function colorize(){
var i = 4;
//get active sheet
var sheet=SpreadsheetApp.getActiveSheet();
//loop through column until no entries
while(sheet.getRange("FRONT!D"+ i).getValue() != ""){
//set different colors
if(sheet.getRange("FRONT!D"+ i).getValue() == "[1]"){
sheet.getRange("FRONT!D"+ i).setBackground("#FA5858");
}else if(sheet.getRange("FRONT!D"+ i).getValue() == "[2]"){
sheet.getRange("FRONT!D"+ i).setBackground("#FE9A2E");
}else if(sheet.getRange("FRONT!D"+ i).getValue() == "[3]"){
sheet.getRange("FRONT!D"+ i).setBackground("#FAF332");
}else if(sheet.getRange("FRONT!D"+ i).getValue() == "[4]"){
sheet.getRange("FRONT!D"+ i).setBackground("#89FA7F");
}else if(sheet.getRange("FRONT!D"+ i).getValue() == "[5]"){
sheet.getRange("FRONT!D"+ i).setBackground("#68ADF8");
}
i++;
}
}
//sort sheet
function sortSheet(){
//get active sheet
var sheet=SpreadsheetApp.getActiveSheet();
//get sorting range
var sortRange=sheet.getRange("FRONT!A4:H" + sheet.getLastRow());
//sort
sortRange.sort([{column: 4, ascending: true},{column: 1, ascending: true}]);
}