Новая строка не поставляется со свойствами таблицы с помощью скрипта Apps - PullRequest
0 голосов
/ 16 октября 2019

Я попытался добавить новую строку в существующую таблицу в файле Google doc, но свойство таблицы не применяется к новой строке. Мне удалось сохранить 2 клетки с помощью стайлинга. Вот функция скрипта приложения

function addRow(fileId)
{
    var body = DocumentApp.openById(fileId).getBody(),
        searchElement = body.findElement(DocumentApp.ElementType.TABLE),
        element = searchElement.getElement(),
        table = element.asTable();

    var cell1Style = table.getRow(0).getCell(0).getAttributes();
    var cell2Style = table.getRow(0).getCell(1).getAttributes();

    cell1Style[DocumentApp.Attribute.BACKGROUND_COLOR] = '#ffffff';
    cell2Style[DocumentApp.Attribute.BACKGROUND_COLOR] = '#ffffff';

    var rowStyle = {};
    rowStyle[DocumentApp.Attribute.BORDER_COLOR] = '#000000';

    var tr = table.appendTableRow();
    tr.setAttributes(rowStyle);
    tr.appendTableCell('My Text:').setAttributes(cell1Style);
    tr.appendTableCell('My value').setAttributes(cell2Style);
}

Вот содержимое документа после выполнения screenshot

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

1 Ответ

1 голос
/ 16 октября 2019

Вот как вы это сделаете:

function myFunction() {
  var body = DocumentApp.getActiveDocument().getBody();
  var table = body.findElement(DocumentApp.ElementType.TABLE).getElement().asTable();

  var newRow = table.appendTableRow();
  var lastRowAttributes = table.getRow(table.getNumRows()-1).getAttributes()

  newRow.appendTableCell("Text 1").setAttributes(lastRowAttributes);
  newRow.appendTableCell("Text 2").setAttributes(lastRowAttributes);
}

Если вам это не подходит, вы можете использовать:

function myFunction() {
  var body = DocumentApp.getActiveDocument().getBody();
  var table = body.findElement(DocumentApp.ElementType.TABLE).getElement().asTable();

  var lastRow = table.getRow(table.getNumRows()-1);

  var newRow = table.appendTableRow(lastRow.copy());

  newRow.getCell(0).setText("Text 1");
  newRow.getCell(1).setText("Text 2");
}

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

Надеюсь, это поможет!

...