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

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

Мне удалось создать только простые таблицы.

Пример массива данных и мой код:

employees=[{    
  'factor':'Clientes',
  'caracteristica':'Tipo de Persona',
  'descripcion':'Posibilidad de que las personas naturales, juridicas..'
},{
  'factor':'Clientes',
  'caracteristica':'Tipo de Regimen',
  'descripcion':'Posibilidad de que los clientes incluidos...'
},{    
  'factor':'Clientes',
  'caracteristica':'Actividad Economica',
  'descripcion':'Posibilidad de que los clientes...'
},{
  'factor':'Productos y/o Servicios',
  'caracteristica':'Servicios',  
  'descripcion':'Posibilidad de que los distintos servicios ofrecidos '
},{
  'factor':'Productos y/o Servicios',
  'caracteristica':'Canales de distribucion',  
  'descripcion':'Posibilidad de que los canales....'
},{
  'factor':'Zona Geografica',
  'caracteristica':'Zona de Frontera',  
  'descripcion':'Presencia en Zonas de frontera con incidencias............'
},{
  'factor':'Zona Geografica',
  'caracteristica':'Zona de Produccion de Hoja de Coca',  
  'descripcion':'Presencia en Zonas para la produccion de hoja de coca.........'
},{
  'factor':'Zona Geografica',
  'caracteristica':'Zona de Minera',  
  'descripcion':'Presencia en Zonas con actividades...'
}];

function funcion2(employees) {
  var doc = DocumentApp.openById('some id');
  var nombre = ''
  var body = doc.getBody();
  var header = body.appendParagraph("Anexo 01");
  header.setAlignment(DocumentApp.HorizontalAlignment.CENTER)
    .editAsText().setFontSize(12);

  var header2 = body.appendParagraph("IDENTIFICACIÓN DE LOS RIESGOS DE LAFT Y RIESGOS ASOCIADOS");
  header2.setAlignment(DocumentApp.HorizontalAlignment.CENTER);
  body.appendParagraph("");
  var section = body.appendParagraph("Para identificar los riesgos de LAFT y riesgos asociados, de acuerdo con la clasificación y caracterización " + nombre + "-" + descripcion);
  section.setAlignment(DocumentApp.HorizontalAlignment.JUSTIFY);
  body.appendParagraph("");

  var tableCliente = body.appendTable();
  var tr1 = tableCliente.appendTableRow();
  var tb = tr1.appendTableCell("CLIENTE").setBackgroundColor("#84cdff");

  var table = body.appendTable();
  for (var i = 0; i < employees.length; i++) {
    if (employees[i].factor == "CLIENTES") {
      var tr=table.appendTableRow();
      var tb = tr.appendTableCell(employees[i].caracteristica).setWidth(90);
      var tb = tr.appendTableCell(employees[i].descripcion);
    }
  }
}

1 Ответ

0 голосов
/ 09 марта 2019

Я не уверен, почему вы захотите использовать скрипт для этого.Я думаю, что было бы гораздо проще создать таблицу в редакторе страниц.

  • Открыть пустой документ.
  • В главном меню выберите Вставить, Таблица и укажите3 столбца и 9 строк.
  • Введите заголовки во всех трех столбцах первого ряда.
  • Введите содержимое во втором и третьем столбцах для всех остальных строк.
  • В 1-м столбце выберите 2-ю, 3-ю и 4-ю ячейки;щелкните правой кнопкой мыши и выберите «Объединить ячейки»
  • В 1-м столбце выберите 5-ю и 6-ю ячейки;щелкните правой кнопкой мыши и выберите «Объединить ячейки»
  • В 1-м столбце выберите 7-ю, 8-ю и 9-ю ячейки;щелкните правой кнопкой мыши и выберите «Объединить ячейки».
  • Введите содержимое в три объединенные ячейки в столбце 1.
  • Выберите любую ячейку, щелкните правой кнопкой мыши, выберите «Свойства таблицы».В разделе «Выравнивание по вертикали ячейки» выберите «Средний».
  • Выберите строку 1 и измените цвет фона на подходящий.

ПАРАМЕТР СКРИПТА

ОП хочет создать таблицу по сценарию , особенностью которого является объединение определенных "общих" ячеек в первом столбце.Код OP дошел до заголовка таблицы.

Существует не так много возможностей использовать ресурс для создания таблиц в Google Docs.Кроме того, совершенно очевидно, что ссылки на таблицы, в которых подчеркиваются «построчные» аспекты, и события / команды, основанные на столбцах, не хватает.

Существует два варианта построения содержимого таблицы.В этом коде я следовал подходу OP - циклически проходить через Object и постепенно обновлять таблицу содержимым.Альтернативой может быть создание нового массива, а затем построение таблицы из массива во многом таким же образом, как описано в документации по таблице классов Google .

employees = [{
  'factor': 'Clientes',
  'caracteristica': 'Tipo de Persona',
  'descripcion': 'Posibilidad de que las personas naturales, juridicas..'
}, {
  'factor': 'Clientes',
  'caracteristica': 'Tipo de Regimen',
  'descripcion': 'Posibilidad de que los clientes incluidos...'
}, {
  'factor': 'Clientes',
  'caracteristica': 'Actividad Economica',
  'descripcion': 'Posibilidad de que los clientes...'
}, {
  'factor': 'Productos y/o Servicios',
  'caracteristica': 'Servicios',
  'descripcion': 'Posibilidad de que los distintos servicios ofrecidos '
}, {
  'factor': 'Productos y/o Servicios',
  'caracteristica': 'Canales de distribucion',
  'descripcion': 'Posibilidad de que los canales....'
}, {
  'factor': 'Zona Geografica',
  'caracteristica': 'Zona de Frontera',
  'descripcion': 'Presencia en Zonas de frontera con incidencias............'
}, {
  'factor': 'Zona Geografica',
  'caracteristica': 'Zona de Produccion de Hoja de Coca',
  'descripcion': 'Presencia en Zonas para la produccion de hoja de coca.........'
}, {
  'factor': 'Zona Geografica',
  'caracteristica': 'Zona de Minera',
  'descripcion': 'Presencia en Zonas con actividades...'
}];

function so5501193401() {

  //define header cell style which we will use while adding cells in header row
  //Background color, text bold, white
  var headerStyle = {};
  headerStyle[DocumentApp.Attribute.BACKGROUND_COLOR] = '#84cdff';
  headerStyle[DocumentApp.Attribute.BOLD] = true;
  headerStyle[DocumentApp.Attribute.FOREGROUND_COLOR] = '#FFFFFF';

  //Style for the cells other than header row
  var cellStyle = {};
  cellStyle[DocumentApp.Attribute.BOLD] = false;
  cellStyle[DocumentApp.Attribute.FOREGROUND_COLOR] = '#000000';

  //By default, each paragraph had space after, so we will change the paragraph style to add zero space
  //we will use it later
  var paraStyle = {};
  paraStyle[DocumentApp.Attribute.SPACING_AFTER] = 0;
  paraStyle[DocumentApp.Attribute.LINE_SPACING] = 1;

  //setup the document reference
  var docid = "<<insert document id as a string>>";
  var doc = DocumentApp.openById(docid);
  var body = doc.getBody();

  // build the document introduction
  var header = body.appendParagraph("Anexo 01");
  header.setAlignment(DocumentApp.HorizontalAlignment.CENTER).editAsText().setFontSize(12);
  var header2 = body.appendParagraph("IDENTIFICACIÓN DE LOS RIESGOS DE LAFT Y RIESGOS ASOCIADOS");
  header2.setAlignment(DocumentApp.HorizontalAlignment.CENTER);
  body.appendParagraph("");
  var section = body.appendParagraph("Para identificar los riesgos de LAFT y riesgos asociados, de acuerdo con la clasificación y caracterización");
  section.setAlignment(DocumentApp.HorizontalAlignment.JUSTIFY);
  body.appendParagraph("");

  // variables for the loop
  var factortext = "";
  var factorcounter = 0

  // build the header row of the table
  var table = body.appendTable();
  var tr = table.appendTableRow();
  var col1title = "Factores de riesgo";
  var col2title = "Caracteristica";
  var col3title = "Descripcion del Riesgo de LAFT";
  var th = tr.appendTableCell(col1title);
  th.setAttributes(headerStyle);
  var th = tr.appendTableCell(col2title);
  th.setAttributes(headerStyle);
  var th = tr.appendTableCell(col3title);
  th.setAttributes(headerStyle);

  // create a loop to work through the 'employees' object
  for (var i = 0; i < employees.length; i++) {

    // add a row and define the cell contents
    var tr = table.appendTableRow();
    var factorname = employees[i].factor;
    var caraname = employees[i].caracteristica;
    var descname = employees[i].descripcion;

    //establish if this is the first row or not
    if (factorcounter != 0) {
      // Logger.log("DEBUG: i: "+i+", record#"+(i+1));//DEBUG
      var factorname = employees[i].factor;
      // Logger.log("DEBUG: factor: "+factorname);//DEBUG

      // establish if this is the continuation or beginning of a new factor group
      if (factortext != factorname) { // this is a new group
        var td = tr.appendTableCell(factorname);
        td.setAttributes(cellStyle);
      } else {
        var td = tr.appendTableCell("");
      }

      factortext = factorname;
    }

    // establish if this is the first row of the table
    if (factorcounter == 0) {
      // Logger.log("DEBUG: i: "+i+", record#1");//DEBUG
      var factorname = employees[i].factor;
      factortext = factorname;
      //Logger.log("DEBUG: factor: "+factorname);//DEBUG
      var td = tr.appendTableCell(factorname);
      td.setAttributes(cellStyle);
    }

    // increment the factor counter
    factorcounter++;

    // insert the characttics and description
    var td = tr.appendTableCell(caraname);
    td.setAttributes(cellStyle);
    var td = tr.appendTableCell(descname);
    td.setAttributes(cellStyle);

  }

}

Скриншот документа

Document screenshot

...