Как скопировать данные из листов форм Google на другие листы, используя скрипт? - PullRequest
1 голос
/ 15 января 2020

Я пытаюсь скопировать данные из таблицы форм Google в более "интерфейсную" таблицу, используя скрипт.

Все работает в принципе нормально, за исключением того, что если я перезагружаю страницу более одного раза, некоторые данные каждый раз перезагружаются на несколько строк.

Первые 4 столбца копируются из таблицы " RAW "в" FRONT ", но последние 4 столбца просто отсортированы вместе с первыми 4. Это также те, которые" не прилипают "к своему аналогу в первых 4 столбцах.

проблема с флажками?

После первой перезагрузки (как это должно выглядеть):

enter image description here

После второй перезагрузки:

enter image description here

Лист RAW также выглядит странно ... почему форма Google вводит данные так далеко внизу?

enter image description here

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}]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...