Google 幻灯片 API 无法从页面实例读取幻灯片内容 (Node.Js)

Google Slides API cannot read content of slide from an instance of page (Node.Js)

我正在尝试从幻灯片演示文稿中读取文本(作为复制和粘贴的解决方法,因为所有幻灯片都具有完全相同的格式)。使用此代码时:

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),参考我的方式,returns undefined

如果我的问题有解决方案,或者您知道将演示文稿 X 的一面复制到演示文稿 Y 的解决方法,请告诉我。提前致谢!

有一个问题跟踪器:https://issuetracker.google.com/36761705

这个修改怎么样?从您的脚本中,我假设您使用 slides.presentations.pages.get().

检索 res

修改点:

  • 带和不带res.data.pageElements.shape.text.textElements.textRun的对象存在于返回对象的元素中。
    • res.data.pageElements 没有 属性 of shape.
    • res.data.pageElements.shape 没有 属性 of text.
    • res.data.pageElements.shape.text 没有 属性 of textElements.
    • res.data.pageElements.shape.text.textElements 没有 属性 of 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) {
  • 如果您使用slides.presentations.get()检索res,请将res.data.pageElements.forEach((file) => {})修改为res.data.slides.forEach((slide) => {slide.pageElements.forEach((file) => {})})

如果我对您的问题有误解,请告诉我。我想修改一下。