Копировать диапазон на основе определенного значения столбца в несколько вкладок в новой книге - PullRequest
1 голос
/ 06 ноября 2019

Я управляю книгой в листах Google, чтобы отслеживать заявки поставщиков. Он имеет одну вкладку под названием «MasterTracker». Заголовки таблиц указаны ниже:

Номер билета |Выпуск |Описание |StatusInternal |StatusVendor |Приоритет |Дата создания |Внутренний Владелец |Владелец Продавца |Разрешение |Целевая Дата Решения |Комментарии |ClosedDate

Что я сейчас хочу сделать, это разделить данные на основе столбца «StatusInternal» (значения: Open, Hold, Future, Hold) и переместить данныедля каждого значения в столбце новая вкладка в одной новой книге с именем статуса в качестве имен листов. Например, все заявки со статусом «открыто», «закрыто», «удерживать» и «будущее» перемещены в лист новостей с именем листа «открыто», «закрыто», «удерживать», «будущее» в новой книге и сохранены на диске Google.

Эта новая рабочая книга ежедневно рассылается по электронной почте, и в настоящее время я выполняю вышеупомянутый процесс вручную.

Может кто-нибудь, возможно, предоставит мне сценарий или добавитна это сделать в Google Sheets?

Спасибо заранее! -Аль

1 Ответ

0 голосов
/ 06 ноября 2019

Если я правильно понял, вам нужна новая электронная таблица с тремя листами (Open, Hold и Future) с соответствующими данными в них.

Это то, что я пробовал:

function createSpreadsheets() {

  var StatusInternal = ["Open","Hold","Future"];

  //Create the new file
  var newSprsheet = SpreadsheetApp.create("Status Internal");

  for (var i = 0; i < StatusInternal.length; i++){
    //Create the new Sheets with the Status Internal names
    newSprsheet.insertSheet(StatusInternal[i]);
  }
  //Activates the first sheet (Sheet1), to delete it, as it is not necessary
  newSprsheet.getSheets()[0].activate();
  newSprsheet.deleteActiveSheet();

  splitData(newSprsheet, StatusInternal);


}

function splitData(newSprsheet, StatusInternal){

  var mainSprsheet = SpreadsheetApp.openById("Id of your main Spreadsheet");
  var mainSheet = mainSprsheet.getActiveSheet();

  //Gets the values of the first row
  var headcolumns = mainSheet.getRange("A1:L1").getValues(); 
  //Gets the values of the Status Internal Column
  var StatusValues = mainSheet.getRange("C2:C").getValues();

  var lastRow = mainSheet.getLastRow();

  for (var i = 0; i < 3; i++){
    //Copies the first row values to each new Sheet
    newSprsheet.getSheets()[i].appendRow(headcolumns[0]);
  }

  for (var i = 2; i <= lastRow; i++){
    //Gets all the values of the row
    var rowContents = mainSheet.getRange("A"+i+":L"+i).getValues();
    //Appends a new row to the Sheet depending of the value in Column C.
    switch(StatusValues[i-2].toString()){

      case StatusInternal[0]:
        newSprsheet.getSheetByName(StatusInternal[0]).appendRow(rowContents[0]);
        break;
      case StatusInternal[1]:
        newSprsheet.getSheetByName(StatusInternal[1]).appendRow(rowContents[0]);
        break;
      case StatusInternal[2]:
        newSprsheet.getSheetByName(StatusInternal[2]).appendRow(rowContents[0]);
        break;
    }

  }
}

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...