Заменить изображение с таблицей в Google Doc - PullRequest
0 голосов
/ 22 ноября 2018

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

    function insertImage(ID, caption) {
    var selection = DocumentApp.getActiveDocument().getSelection();
    if (selection) {
        var elements = selection.getSelectedElements();
        var tImg = elements[0].getElement();
        var cells = [
            [tImg.asInlineImage(), ID+': '+caption]
        ];
        var parentElement = tImg.getParent();
        parentElement.insertTable(parentElement.getChildIndex(tImg) + 1, cells)
        tImg.removeFromParent();
    }
}

Изображение не удаляется и таблица не добавляется.Спасибо!

1 Ответ

0 голосов
/ 26 ноября 2018
  • Вы хотите заменить выбранное изображение на таблицу.
  • Вы хотите выделить выбранное изображение в 1-й столбец ячейки вставленной таблицы.текст помещается во 2-й столбец.

Если мое понимание вашего вопроса верное, как насчет этой модификации?

Точки модификации:

  • Метод insertTable() является методом класса тела.
  • Место изображения должно быть извлечено как дочерний индекс тела документа.
  • Изображение вставляется в ячейкувставленная таблица после вставки таблицы.
  • В этой модификации при удалении изображения удаляется абзац изображения.Таким образом, изображение можно заменить на таблицу, не включая разрыв строки.Эта ситуация аналогична вставке изображения в ячейку.
  • getSelectedElements() устарело.Поэтому, пожалуйста, используйте getRangeElements().

Когда вышеуказанные точки отражаются в сценарии, он становится следующим:

Измененный сценарий:

function insertImage(ID, caption) {
//  ID = "sample ID"; // for sample
//  caption = "sample caption"; // for sample

  var doc = DocumentApp.getActiveDocument(); // Added
  var body = doc.getBody(); // Added
  var selection = doc.getSelection(); // Modified
  if (selection) {
    var elements = selection.getRangeElements(); // Modified
    var e = elements[0].getElement(); // Modified
    if (e.getType() == DocumentApp.ElementType.INLINE_IMAGE) { // Added
      var tImg = e.asInlineImage(); // Modified
      var parentElement = tImg.getParent();
      var cells = [["", ID + ': ' + caption]]; // Modified
      var table = body.insertTable(body.getChildIndex(parentElement), cells); // Modified
      var cell = table.getCell(0, 0); // Added
      cell.insertImage(0, tImg.getBlob()).getParent().asParagraph().getNextSibling().removeFromParent(); // Added
      tImg.getParent().asParagraph().removeFromParent(); // Modified
    }
  }
}
Ввод:

enter image description here

Вывод:

enter image description here

Примечание:

  • В вашем сценарии 1-е изображениевыбранных элементов используется.Поэтому я последовал этому.

Ссылки:

Если это не то, что вы хотите, пожалуйста, сообщите мне.Я хотел бы изменить его.

...