Google Slides API не может читать содержимое слайда с экземпляра страницы (Node.Js) - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь прочитать текст из слайд-презентации (в качестве обходного пути для копирования и вставки, поскольку все слайды имеют одинаковый точный формат).При использовании этого кода:

res.data.pageElements.forEach((file) => {
    let textElements = file.shape.text.textElements;
    textElements.forEach(function(each){
        console.log(each.textRun.content);
    });
});

Несмотря на то, что ответ говорит, что там, если я использую console.log(res.data.pageElements.shape.text.textElements.textRun), ссылаясь на то, как я это сделал, возвращается undefined.

Пожалуйста, дайте мне знать, если есть решение моей проблемы, или если вы знаете обходной путь копирования стороны из презентации X в презентацию Y. Заранее спасибо!

Для этого существует система отслеживания проблем: https://issuetracker.google.com/36761705

1 Ответ

0 голосов
/ 20 декабря 2018

Как насчет этой модификации?Из вашего сценария я предполагаю, что вы извлекаете res, используя slides.presentations.pages.get().

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

  • Объекты с res.data.pageElements.shape.text.textElements.textRun и без него существуют в элементах возвращаемогообъект.
    • res.data.pageElements, у которого нет свойства shape.
    • res.data.pageElements.shape, у которого нет свойства text.
    • res.data.pageElements.shape.text, у которого нет свойстваtextElements.
    • res.data.pageElements.shape.text.textElements, у которого нет свойства textRun.

Я думаю, что это может быть причиной вашей проблемы.

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

slides.presentations.pages.get({
  presentationId: presentationId,
  pageObjectId: pageObjectId,
}, (err, res) => {
  if (err) {
    console.log(err);
  } else {
    res.data.pageElements.forEach((file) => {
      if (file.shape && file.shape.text && file.shape.text.textElements) {
          let textElements = file.shape.text.textElements;
          textElements.forEach(function(each) {
          if ("textRun" in each) {
            console.log(each.textRun.content);
          }
        });
      }
    });
  }
});

Примечание:

  • Я думаю, что вы также можете использовать if ("shape" in file && "text" in file.shape && "textElements" in file.shape.text) { вместо if (file.shape && file.shape.text && file.shape.text.textElements) {.
  • Если вы извлекаете res, используя slides.presentations.get(), измените res.data.pageElements.forEach((file) => {}) на res.data.slides.forEach((slide) => {slide.pageElements.forEach((file) => {})}).

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

...