Можно ли выбирать рисунки с помощью скрипта приложения в Документах Google?

У меня есть документ с рисунками Google, которые по какой-либо причине нельзя выбрать в пользовательском интерфейсе. Я не уверен, как они были размещены.

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

Мне интересно, если кто-нибудь знает трюк для достижения этой цели..

Самым близким, что я нашел, был их образец для удаления изображений:

function myFunction() {
  var body = DocumentApp.getActiveDocument().getBody();

// Remove all images in the document body.
var imgs = body.getImages();
for (var i = 0; i < imgs.length; i++) {
  // Retrieve the paragraph's attributes.
var atts = imgs[i].getAttributes();

// Log the paragraph attributes.
for (var att in atts) {
  Logger.log(att + ":" + atts[att]);
}
  imgs[i].removeFromParent();

}
}

1 ответ

Никогда не поздно (надеюсь). Хитрость здесь в том, что встроенные рисунки (InlineDrawing) являются дочерними элементами Paragraph или ListItem (source).

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

К сожалению, до сих пор я не нашел, как удалить рисунки, которые не являются встроенными (рисунки, которые находятся над или под текстом). Пожалуйста, простите мою ограниченность.

      function eraseSomeDrawingsFromDoc() {
  var body = DocumentApp.getActiveDocument().getBody();
  const paragraphs = body.getParagraphs()
  paragraphs.forEach(paragraph => {
    const childIfAny = paragraph.getNumChildren() > 0 && paragraph.getChild(0) //TODO: analyze all children
    const childType = childIfAny && childIfAny.getType()
    const iAmADrawing = childType === DocumentApp.ElementType.INLINE_DRAWING
    if(iAmADrawing) childIfAny.removeFromParent()
  })
}
Другие вопросы по тегам