Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script Google脚本:根据保存在工作表中的URL替换幻灯片中的2个图像_Google Apps Script_Google Sheets_Google Slides_Image Replacement - Fatal编程技术网

Google apps script Google脚本:根据保存在工作表中的URL替换幻灯片中的2个图像

Google apps script Google脚本:根据保存在工作表中的URL替换幻灯片中的2个图像,google-apps-script,google-sheets,google-slides,image-replacement,Google Apps Script,Google Sheets,Google Slides,Image Replacement,我正在寻找写一个脚本,将取代谷歌幻灯片中的两个图像基于两个图像URL保存在相邻的单元格(即B1,B2)在谷歌表。两张图片都在同一张幻灯片上。我不确定如何循环浏览图像,同时循环浏览表格单元格(即,根据单元格B1中的URL替换图像1,然后根据单元格B2中的URL替换图像2)。任何关于示例脚本的帮助(我是新手!!)都将不胜感激。这是各种各样的东西的混合体。我已经做了几个小时了,终于可以替换幻灯片上的几个图像了。但无论如何这都不是一个完美的解决方案 第一个函数弹出一个提示对话框,让您输入幻灯片演示Id。

我正在寻找写一个脚本,将取代谷歌幻灯片中的两个图像基于两个图像URL保存在相邻的单元格(即B1,B2)在谷歌表。两张图片都在同一张幻灯片上。我不确定如何循环浏览图像,同时循环浏览表格单元格(即,根据单元格B1中的URL替换图像1,然后根据单元格B2中的URL替换图像2)。任何关于示例脚本的帮助(我是新手!!)都将不胜感激。

这是各种各样的东西的混合体。我已经做了几个小时了,终于可以替换幻灯片上的几个图像了。但无论如何这都不是一个完美的解决方案

第一个函数弹出一个提示对话框,让您输入幻灯片演示Id。然后它遍历所有幻灯片和所有页面元素,查找SlidesApp.PageElementType.IMAGE类型的页面元素,当找到它们时,它会记录下下一个函数需要的imageObjectId

function runOne() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var resp=SpreadsheetApp.getUi().prompt("Presentation Id", "Enter Presentation Id", SpreadsheetApp.getUi().ButtonSet.OK_CANCEL);
  if(resp.getSelectedButton()==SpreadsheetApp.getUi().Button.OK) {
    var presentationId=resp.getResponseText();
    var p=SlidesApp.openById(presentationId);
    var slds=p.getSlides();
    var n=1;
    var html=Utilities.formatString('<br /><strong>Presentation Name:</strong> %s<br /><strong>Presentation Id:</strong> %s<br /><hr>',p.getName(), presentationId);
    for(var i=0;i<slds.length;i++) {
      var pageObjectId=slds[i].getPageElements()[0].getParentPage().getObjectId();
      //var imageObjectId=slds[i].getPageElements()[0].asImage().getObjectId()
      if(pageObjectId) { 
        var elementsA=slds[i].getPageElements();
        html+=Utilities.formatString('<br /><strong>Page:</strong> %s <strong>pageObjectId:</strong> %s', i+1, pageObjectId);
        for(var j=0;j<elementsA.length;j++) {
          if(elementsA[j].getPageElementType()==SlidesApp.PageElementType.IMAGE) {
            var imageObjectId=elementsA[j].asImage().getObjectId();
            html+=Utilities.formatString('<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>Page Element:</strong> %s <strong>imageObjectId:</strong> %s', j+1,imageObjectId);
          }
        }
        html+='<br /><hr width="50%" align="left">';        
      }
    }  
    var userInterface=HtmlService.createHtmlOutput(html).setWidth(1000);
    SpreadsheetApp.getUi().showModelessDialog(userInterface, "Slide Image Properties")
  }
}
因此,第一个函数包含除replacementUrl之外的大部分所需信息。我获取这个url的方法是将任何我想用于任何事情的图像上传到照片库。有时候最简单的方法就是把它下载到我的电脑上,然后上传到图书馆。一旦它在图书馆点击它和黑暗的屏幕将打开显示图像。此时,移动到图像,右键单击并选择“复制图像地址”,并将其用于替换URL

如果您对幻灯片演示文稿进行了任何编辑,则该页面的imageObjectId可能会更改,您可能需要更新它们才能使此代码正常工作。您可以在API资源管理器上使用所有这些功能

function replaceSlideImage(presentationId,imageObjectId,replacementUrl) {
  var resource={"requests": [{"replaceImage": {"imageObjectId":imageObjectId,"url":replacementUrl}}]};
  Slides.Presentations.batchUpdate(resource, presentationId)
}