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 的解决方法,请告诉我。提前致谢!
这个修改怎么样?从您的脚本中,我假设您使用 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) => {})})
。
如果我对您的问题有误解,请告诉我。我想修改一下。
我正在尝试从幻灯片演示文稿中读取文本(作为复制和粘贴的解决方法,因为所有幻灯片都具有完全相同的格式)。使用此代码时:
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 的解决方法,请告诉我。提前致谢!
这个修改怎么样?从您的脚本中,我假设您使用 slides.presentations.pages.get()
.
res
修改点:
- 带和不带
res.data.pageElements.shape.text.textElements.textRun
的对象存在于返回对象的元素中。res.data.pageElements
没有 属性 ofshape
.res.data.pageElements.shape
没有 属性 oftext
.res.data.pageElements.shape.text
没有 属性 oftextElements
.res.data.pageElements.shape.text.textElements
没有 属性 oftextRun
.
我认为这可能是您遇到问题的原因。
修改后的脚本:
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) => {})})
。
如果我对您的问题有误解,请告诉我。我想修改一下。