Как сохранить формат листа при использовании функции getvalues ​​() в GAS - PullRequest
0 голосов
/ 08 ноября 2019

В настоящее время у меня есть код (кричите @Jescanellas для создания кода), который идентифицирует уникальные значения в определенном столбце (столбец D), создает новую электронную таблицу в листах Google и помещает заголовок таблицы и данные, относящиеся кзначение на отдельном листе в новой электронной таблице. Заголовки таблицы указаны ниже:

Ticket Number | Issue | Description | StatusInternal | StatusVendor | Priority | Created Date | Internal Owner | Vendor Owner | Resolution | Target Resolution Date | Comments | ClosedDate

Однако, во-первых, код не сохраняет формат таблицы, такой как границы, шрифт, выравнивание, цвет строки заголовка и т. Д., ВДругими словами, это в виде простого текста. Поэтому я хотел бы узнать о возможностях сохранения формата и о том, как изменить код для его достижения.

Во-вторых, я хотел бы сохранить новый документ, созданный кодом, в определенном месте на диске Google вместе ссоглашение об именах "DocumentName_Date", и я не уверен, как этого добиться.

Обновленный код ниже

function createSpreadsheets() {

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

  //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("DocID");
  var mainSheet = mainSprsheet.getSheetByName("MasterTracker");

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

  var lastRow = mainSheet.getLastRow();

  for (var i = 0; i < 4; 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+":M"+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;

      case StatusInternal[3]:
        newSprsheet.getSheetByName(StatusInternal[3]).appendRow(rowContents[0]);
        break;
   }
        var newAllsheets = newSprsheet.getSheets();
    for (var s in newAllsheets)
    { 
      var sheet = newAllsheets[s];
        sheet.setColumnWidth(2, 275);
        sheet.setColumnWidth(3, 275);
        sheet.setColumnWidth(10, 275);
        sheet.setColumnWidth(12, 275);
        sheet.getRange('A1:M1').activate();
        sheet.getActiveRangeList().setBackground('ACCENT6')
        .setFontColor('white');
        sheet.getRange('A:M').activate();
    sheet.getActiveRangeList().setWrapStrategy(SpreadsheetApp.WrapStrategy.WRAP)
        .setVerticalAlignment('middle')
        .setHorizontalAlignment('left')
        .setFontFamily('Roboto')
        .setFontSize(10)
        .setBorder(true, true, true, true, true, true, '#b7b7b7', SpreadsheetApp.BorderStyle.SOLID);
    }
  }
}

Я нашел свойства, которые необходимо применитьна новые листы и модифицированный код. Хорошей новостью является то, что формат правильно применяется ко всем вкладкам. Однако выполнение выполнялось более 8 минут, и я вижу это сообщение

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

Любая помощь в выявлении причины ошибки и повышении эффективности кода будет принята с благодарностью.

Заранее спасибо

-Al

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