Скрипт Google Apps getWidth () для ширины ячейки таблицы документа возвращает ноль - PullRequest
1 голос
/ 03 ноября 2019

Я хотел бы вставить изображение в документ Google с помощью Google Apps Script и растянуть его (изображение) по ширине страницы - поля или вставить его в ячейку таблицы и распределить по ширинеячейки.

Код выглядит так:

var image = DriveApp.getFileById(fileId).getBlob();
var insertPlace = body.findText(searchText).getElement();
insertPlace.asText().setText("");
var insertedImage = insertPlace.getParent().asParagraph().insertInlineImage(0, image);
var h = insertedImage.getHeight();
var w = insertedImage.getWidth();
insertedImage.setWidth(width).setHeight(width * h / w);

А в чем проблема?

width!

Как найти ширину ячейки или тела таблицы?

Я пробовал с

var width = insertPlace.getParent().asParagraph().asTableCell().getWidth();

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

Кто-нибудь получил представление о том, как получить ширину ячейки?

Кроме того, как получитьширина страницы, поля и т. д. *

ОБНОВЛЕНИЕ

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

https://developers.google.com/apps-script/reference/slides/table-cell https://developers.google.com/apps-script/reference/document/table-cell

В версии слайдов есть, например, getParentColumn (), которыйнедоступно для документа ... много подобных расхождений.

Что делают эти ребята в Google?!?!?

1 Ответ

2 голосов
/ 03 ноября 2019

Это не идеально, но мне кажется, это довольно близко. Может быть, вы могли бы поработать с этим еще немного и пройти остаток пути. Я думал, что PAGE_WIDTH и PAGE_HEIGHT были в точках, но когда я смотрел на число, оно казалось довольно большим, поэтому я использовал их в качестве пикселей. И, кажется, работает для меня, изображение центрируется на странице и идет от левого поля к правому краю. Я не регулировал высоту страницы, потому что мое изображение выглядело нормально, но вы можете сделать это.

function insertImage() {
  var doc=DocumentApp.getActiveDocument();
  var body=doc.getBody();
  var atts=body.getAttributes();
  for(var att in atts) {
    Logger.log(att + ':' + atts[att]);
  }
  var folderId="Folder ID";
  var files=DriveApp.getFolderById(folderId).getFiles();
  while(files.hasNext()) {
    var file=files.next();
    if(file.getName()=="Image File Name") {
      var image=file.getBlob().getAs('image/png');//may need to change content type
      var img=body.appendImage(image);
      var h=img.getHeight();
      var w=img.getWidth();
      var mr=atts['MARGIN_RIGHT'];
      var ml=atts['MARGIN_LEFT'];
      var sw=atts['PAGE_WIDTH'];
      var sh=atts['PAGE_HEIGHT'];
      img.setHeight(sw*h/w);
      img.setWidth((sh-mr-ml)*w/h);
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...