Как удалить позиционированные изображения из Документов Google? - PullRequest
1 голос
/ 31 марта 2019

Я пытаюсь создать функцию, которая стирает все в документе Google.

Мой код, который идет следующим образом, избавляется от всего, кроме позиционированных изображений .

// clears document
function eraseContent(){ 
  var body = DocumentApp.getActiveDocument().getBody();

  body.clear();

  // Remove all images in the document body.
  var imgs = body.getImages();
  for (var i = 0; i < imgs.length; i++) {
  imgs[i].removeFromParent();
  }
}

Большая часть этого кода взята из здесь .

Что я могу сделать, чтобы удалить позиционированные изображения из моего документа?

1 Ответ

1 голос
/ 31 марта 2019

На данном этапе, к сожалению, пока нет методов удаления позиционированных изображений в Class PositionedImage.Но при использовании Google Docs API позиционированные изображения могут быть удалены.Так как насчет этой модификации?Этот измененный сценарий выглядит следующим образом.

  1. Извлечение абзацев.
  2. Извлечение идентификаторов объектов позиционированных изображений.
  3. Создание тела запроса для методаbatchUpdate в Google Docs API с использованием полученных идентификаторов объектов.
  4. Удаление позиционированных изображений.

Чтобы использовать образец сценария, перед его запуском необходимо включить API Google Docs.в консоли расширенных служб Google и API следующим образом.

Включить API Документов Google в службах Advanced Google *

  • в редакторе сценариев
    • ресурсы -> расширенные службы Google
    • Включить Google Docs API v1

Включить Google Docs API на консоли API

  • В редакторе сценариев
    • Ресурсы -> Проект облачной платформы
    • Просмотр консоли API
    • На начальном этапе нажмите «Исследовать и включить API».
    • С левой стороны нажмите Библиотека.
    • В "Поиск API и сервисов", inpuт "Документы".И нажмите «Google Docs API».
    • Нажмите кнопку «Включить».
    • Если API уже включен, не выключайте его.

Модифицированный скрипт:

Пожалуйста, замените eraseContent() следующим образом и запустите его.

function eraseContent(){
  var doc = DocumentApp.getActiveDocument();
  var body = doc.getBody();
  body.clear();

  // Retrieve paragraphs.
  var paragraphs = body.getParagraphs();

  // Retrieve the object IDs of the positioned images.
  // Create request body for the method of batchUpdate in Google Docs API using the retrieved object IDs.
  var requests = paragraphs.reduce(function(ar, e) {
    return ar.concat(e.getPositionedImages().map(function(f) {
      return {deletePositionedObject: {objectId: f.getId()}}
    }));
  }, []);

  // Delete the positioned images.
  if (requests.length > 0) {
    Docs.Documents.batchUpdate({requests: requests}, doc.getId());
  }
}

Ссылки:

Если я неправильно понял ваш вопрос, я приношу свои извинения.

...