Скрипт Google Merge Ячейки в Документе Google Таблица - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь сделать сценарий для объединения 2-х (или нескольких) ячеек в документе Google. В любом случае результат не так хорош, как я ожидал, потому что у меня ошибка при обновлении страницы, а визуально объединенная ячейка неДо тех пор, пока таблица Результат слияния и исходная таблица введите описание изображения здесь

Мой скрипт Google:

function onOpen() {
  // Add a menu with some items, some separators, and a sub-menu.
  DocumentApp.getUi().createMenu('Sample')
      .addItem('Fusion cellules tableau', 'mergeCells')          
      .addToUi();
}



function mergeCells() {
  var body = DocumentApp.getActiveDocument().getBody();
  for (var p= 0; p< body.getNumChildren(); p++) {
    var child = body.getChild(p);
    if (child.getType() == DocumentApp.ElementType.TABLE){
      // Assume we've already located our table
      var table = child;
      var tableRow = table.getChild(2); // gets third row
      var tableCell = tableRow.getChild(1); // gets second cell in row
      tableCell.merge(); // Merges seconde cell with first cell.      
      }
  }
}

Так что, если у вас есть идея, я буду очень счастлив :)

1 Ответ

0 голосов
/ 12 июня 2018

Извините, это кажется очень расстраивающим.Я смог воспроизвести вашу проблему, и это похоже на ошибку в том, как метод .merge () работает с ячейками таблицы.Scripts .merge () объединяет содержимое элемента с предыдущим элементом, а затем удаляет этот второй элемент.Это на самом деле отличается от того, как работает объединение ячеек (в документе).Когда вы объединяете ячейки из документа, он фактически не удаляет никакие элементы, просто изменяет отображение, чтобы вы не могли получить доступ к «скрытой» ячейке.Если вы вызываете getNumChildren () для строки с объединенной ячейкой, она по-прежнему содержит полное число столбцов.

Запуск .merge () в ячейке удаляет второго дочернего элемента и, по-видимому, создает структуру таблицы без разрешения, котораявозможно, поэтому он выдает ошибку.

Кстати, есть метод .getRowSpan (), который вы можете вызвать для ячейки, который возвращает 1 для нормальных ячеек и 0 для объединенных ячеек, однако неудобно, что естьнет "setRowSpan ()", поэтому не похоже, что вы можете выполнить обычное слияние стилей из скрипта.

Здесь есть похожий вопрос здесь пару лет назад.

Также здесь есть ошибка , указанная в Google.Это с 5 (!) Лет назад.Вы можете попробовать опубликовать там.

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

...