Javascript 在Google应用程序脚本中获取幻灯片标题

Javascript 在Google应用程序脚本中获取幻灯片标题,javascript,google-apps-script,google-api,google-slides-api,Javascript,Google Apps Script,Google Api,Google Slides Api,我正在尝试编写一个谷歌应用程序脚本,它会获取每张幻灯片的标题(就像主幻灯片中的标题一样),并将它们放在幻灯片2中格式良好的目录中 这不一定要用应用程序脚本来完成,但这是我能想到的最好的方法 function readPageElementIds(presentationId, pageId) { var response = Slides.Presentations.get( presentationId); Logger.log(response.slides) for

我正在尝试编写一个谷歌应用程序脚本,它会获取每张幻灯片的标题(就像主幻灯片中的标题一样),并将它们放在幻灯片2中格式良好的目录中

这不一定要用应用程序脚本来完成,但这是我能想到的最好的方法

function readPageElementIds(presentationId, pageId) {
  var response = Slides.Presentations.get(
      presentationId);
  Logger.log(response.slides)
  for (var i = 0; i < response.slides.length; i++) {
    var slide = response.slides[i].pageElements;
    for (var j = 0; j < slide.length; j++) {
      if (slide[j].shape) {
        var texts = slide[j].shape.text.textElements;
        for (var k = 0; k < texts.length; k++) {
          if (texts[k].autoText) {
             Logger.log(texts[k].autoText.content);
          }
        }
      }
    }
  }
}
函数readPageElementId(presentationId,pageId){ var response=Slides.Presentations.get( 表象d); Logger.log(response.slides) 对于(var i=0;i
是的,有很多for循环,我不知道怎么做。

非常接近。你错过的东西:

  • 您正在迭代所有形状,而不仅仅是标题。为此,在
    shape.placeholder.type
    属性上进行筛选。您只希望查看具有
    标题
    居中标题
    占位符类型的形状

  • 自动图文集
    文本元素相对较少。您的大部分文本将位于
    TextRun
    文本元素中

该代码将在以下情况下起作用:

function readPageElementIds(presentationId, pageId) {
  var response = Slides.Presentations.get(
      presentationId);
  Logger.log(response.slides)
  for (var i = 0; i < response.slides.length; i++) {
    var slide = response.slides[i].pageElements;
    for (var j = 0; j < slide.length; j++) {
      if (slide[j].shape && slide[j].shape.placeholder
          && (slide[j].shape.placeholder.type == 'TITLE'
              || slide[j].shape.placeholder.type == 'CENTERED_TITLE')) {
        var texts = slide[j].shape.text.textElements;
        var shapeText = "";
        for (var k = 0; k < texts.length; k++) {
          if (texts[k].autoText) {
             shapeText += texts[k].autoText.content;
          }
          if (texts[k].textRun) {
             shapeText += texts[k].textRun.content;
          }
        }
        Logger.log(shapeText);
      }
    }
  }
}
函数readPageElementId(presentationId,pageId){ var response=Slides.Presentations.get( 表象d); Logger.log(response.slides) 对于(var i=0;i我还可以很容易地在每个标题的某些属性中添加某种标志(例如略浅的黑色)。这是我想到的事情之一,但我完全不知道如何实现它。apps脚本的文档每次都让我着迷(很糟糕)。谢谢