通过应用脚本

时间:2017-09-04 14:44:16

标签: google-apps-script google-sheets google-slides

我们目前正在尝试自动更新' Google幻灯片和Google表格之间的数据。目前在Google幻灯片中,我有来自Google表格的导入链接表格。我希望可以通过Apps脚本触发数据更新,但很难让它运行起来。它似乎可以通过API,但不一定通过Apps脚本。

有没有人有解决方案?

由于

1 个答案:

答案 0 :(得分:1)

我刚刚开始了解这件事。

我一直在使用只有图片和文字的幻灯片演示文稿,这是我昨天写的一个函数,用于获取我想知道如何更新的文本对象

function logSlidesAndElements() {
  var presentationId='presentationID';
  var presentation=Slides.Presentations.get(presentationId);
  var slides=presentation.slides
  var s='';
  var br='<br />';
  s+=br + Utilities.formatString('The presentation contains %s slides:', slides.length);
  for (var i=0;i<slides.length;i++) 
  {
     s+=br + Utilities.formatString('slides[%s].objectId=%s',i,slides[i].objectId); 
     for(var j=0;j<slides[i].pageElements.length;j++)
     {
       s+=br + Utilities.formatString('slides[%s].pageElements[%s].objectId: %s',i,j,slides[i].pageElements[j].objectId);
       if(typeof(slides[i].pageElements[j].description)!='undefined')
       {
         s+=br + Utilities.formatString('slides[%s].pageElement[%s]=%s',i,j,(typeof(slides[i].pageElements[j].description)!='undefined')?slides[i].pageElements[j].description:'');
       }
       if(slides[i].pageElements[j].shape && slides[i].pageElements[j].shape.shapeType && slides[i].pageElements[j].shape.shapeType=='TEXT_BOX')
       {
          if(slides[i].pageElements[j].shape && slides[i].pageElements[j].shape.text && slides[i].pageElements[j].shape.text.textElements.length)
          {
            for(var k=0;k<slides[i].pageElements[j].shape.text.textElements.length;k++)
            {
              if(slides[i].pageElements[j].shape.text.textElements[k] && slides[i].pageElements[j].shape.text.textElements[k].textRun && slides[i].pageElements[j].shape.text.textElements[k].textRun.content)
              {
                s+=br + Utilities.formatString('slides[%s].pageElements[%s].shape.text.textElements[%s].textRun.content=%s',i,j,k,slides[i].pageElements[j].shape.text.textElements[k].textRun.content); 
                s+=br + Utilities.formatString('slides[%s].pageElements[%s].objectId: %s',i,j,slides[i].pageElements[j].objectId);
              }
            }
          }
        }
        if(slides[i].pageElements[j].image)
        {
          s+=br + Utilities.formatString('slides[%s].pageElements[%s].objectId: %s',i,j,slides[i].pageElements[j].objectId);
        }
      }
      s+=br;
   }
   var ui=HtmlService.createHtmlOutput(s).setWidth(1000).setHeight(450);
   SpreadsheetApp.getUi().showModelessDialog(ui, 'HillViewDental Presentation');
}

我在API资源管理器中学习了很多关于如何设置请求的知识,并且今天早上开始取得了一些成功。我能够删除一张幻灯片的所有文本,并用这两个函数替换它。

function insertText()
{
  Slides.Presentations.batchUpdate({"requests": [{"insertText": {"objectId": "g24899cf468_0_47","insertionIndex": 0,"text": "This is going to slide 3"}}]}, "1tdCmlhYt8gNgBBa5EvmSlg7yL5_V1irK8RdL2YQRLUE");
}

function deleteText()
{
  Slides.Presentations.batchUpdate({"requests": [{"deleteText": {"objectId": "g24899cf468_0_47","textRange": {"type": "ALL"}}}]}, "1tdCmlhYt8gNgBBa5EvmSlg7yL5_V1irK8RdL2YQRLUE");
}

这是logSlidesAndElements()函数的输出结果

enter image description here

我知道它并不是很精致,但为了达到这个目的,我花了很多时间研究,现在我开始在隧道尽头看到一些希望。我猜这个网站上还有其他人比我更了解但我注意到你的问题已经存在了一段时间,所以我想我会和你分享我的进步,因为我知道它有多么令人沮丧。