2014-11-25 6 views
2

У меня есть Google Doc, содержащий одну таблицу. Я пытаюсь написать сценарий, который добавляет несколько пустых строк в таблицу, как я могу это сделать?Измените таблицу из сценария в Документах Google

Я попытался с помощью следующей функции:

function insertRows2() { 
    var NUMBER_OF_ROWS = 40; 

    var body = DocumentApp.getActiveDocument().getBody(), 
     searchElement = body.findElement(DocumentApp.ElementType.TABLE), 
     element = searchElement.getElement(), 
     table = element.asTable(); 

    Logger.log('num rows: ' + table.getNumRows()); 

    for (var i = 0; i < NUMBER_OF_ROWS; i++) { 
    table.appendTableRow(); 
    } 

    Logger.log('num rows: ' + table.getNumRows()); 
} 

Выход:

[14-11-25 15:02:26:275 CET] num rows: 1077 
[14-11-25 15:02:26:353 CET] num rows: 1117 

Но я не вижу вновь созданные строки в документе. Если я вручную вставить строки формируют пользовательский интерфейс, а затем повторно выполнить сценарий, я получаю:

[14-11-25 15:04:24:317 CET] num rows: 1118 
[14-11-25 15:04:24:400 CET] num rows: 1158 

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

Журнал говорит 1158 строк, но документ фактически только имеет ~ 30 строк

+1

Я _think_ вы добавляете пустые строки, а _empty_ - это не то же самое, что _blank_. Пользовательский интерфейс, вероятно, добавляет строки _blank_. Что произойдет, если вы попробуете 'table.appendTableRow(). AppendTableCell (" test ");'? Какое содержимое tableRow добавлено пользовательским интерфейсом, а также добавлено вашим кодом? – Mogsdad

+0

aaaaand это работает! :) Спасибо! Итак, чтобы идентифицировать все «строки таблицы призрак» (чтобы удалить их), вы считаете, что проверка на 'tableRow.getNumCells() === 0' будет делать? Могу ли я принять комментарий? Вы хотите добавить ответ, чтобы я мог его принять? – Whisky84

+0

Ответ добавлен - когда я только догадываюсь, я использую комментарии. Я считаю, что проверка на 0 ячеек будет достаточным испытанием для идентификации строк для удаления. Альтернатива, получившая в качестве теста, выбрала бы «пустые», а также «пустые» строки, поэтому это не поможет. – Mogsdad

ответ

2

Позвонив table.appendTableRow(), вы добавляя пустые строки - и пустой не то же самое, как пустой.

В отличие от этого пользовательский интерфейс добавляет пустые строки, которые имеют дочерний элемент tableCells. Любое видимое содержимое в строке заканчивается в tableCell; поэтому, добавив хотя бы одну из них в свою строку, вы должны получить видимую строку.

Попробуйте вместо этого table.appendTableRow().appendTableCell();.

Смежные вопросы