【问题标题】:How do I upload image from Google Sheets to Google Slides如何将图片从 Google 表格上传到 Google 幻灯片
【发布时间】:2021-12-13 23:49:48
【问题描述】:

正如标题所示,我目前有一些代码可以截取网站的屏幕截图并将其放在我的 Google 表格中。我的问题是如何将该图像传输到演示文稿中?图像可能会改变,所以如果可以动态改变会更好。我看到了ReplaceAllShapesWithImageRequest 课程,但没有很多示例,他们使用 URL 而不是 Google 表格中的单元格。感谢您的帮助!

编辑
此外,可能还有更多图像(大约 9 个),并且现在幻灯片中有占位符,但是我如何才能针对特定图像定位特定幻灯片以适合这样的内容

数字 01-08 将是图像。 谢谢你的帮助。

编辑 2
以下是截图的代码

function snapScreenshot() {
  //specify where I want the image to be
  var row = 11;
  var col = 2;
  var siteUrl = sheet.getRange(row, col).getValue()
  var url = "https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=" + encodeURIComponent(siteUrl) + "&key=" + pageSpeedApiKey;
  var res = UrlFetchApp.fetch(url).getContentText()
  var obj = JSON.parse(res);
  var imgData = obj.lighthouseResult.audits['final-screenshot'].details.data;
  var strImage = imgData.replace(/^data:image\/[a-z]+;base64,/, "")
  var blob = Utilities.newBlob(Utilities.base64Decode(strImage), "image/jpeg", "sample.jpeg");
  sheet.insertImage(blob, 1, 29);

   for (var i=0; i< obj.lighthouseResult.audits["screenshot-thumbnails"].details.items.length; i++) {
    var imgData = obj.lighthouseResult.audits["screenshot-thumbnails"].details.items[i].data;
    var strImage = imgData.replace(/^data:image\/[a-z]+;base64,/, "")
    var blob = Utilities.newBlob(Utilities.base64Decode(strImage), "image/jpeg", "sample.jpeg");
    sheet.insertImage(blob, 1, 20+(i*6))
  }
}



【问题讨论】:

  • 您能提供您当前的脚本吗?而且,您的问题是My question is how to then transfer that image to the presentation? 吗?如果我的理解是正确的,什么是“编辑”部分?
  • @Tanaike 我的问题的基础是how to transfer the screenshots(images) I took of the website to a specific section(number 01-08) of a specific slide(will have 2 slides that need images)。您需要我提供脚本的哪一部分?我已经完成了截图部分,但刚刚在谷歌上搜索如何传输图像。我希望这能解决问题。谢谢。
  • 感谢您回复并添加您的脚本。从您的脚本中,在您的情况下,是否需要将图像从电子表格复制到幻灯片?比如直接把图片放到Slides上怎么样?但我不确定你的实际情况。所以这不是你期望的方向,我很抱歉。
  • @Tanaike 如果每次运行脚本时都可以根据 URL 更改图像,那么可以将图像直接放到幻灯片中。
  • 感谢您的回复。我认为在您的情况下,脚本可以由时间驱动的触发器运行。这样,图像可以按周期更新。如果您可以使用脚本直接将图像放入幻灯片,我认为它可以更简单。

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


【解决方案1】:

多亏了 Tanaike 的指导,我有点明白了。我没有从 pagespeed 洞察 api 获取图像,而是将其放在 Sheets然后 将其放在 Slide 上,而是直接将图像放在 Slide 上。

function snapScreenshot(presentationId) {
  var row = 11;
  var col = 2;
  var siteUrl = sheet.getRange(row, col).getValue()
  var url = "https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=" + encodeURIComponent(siteUrl) + "&key=" + pageSpeedApiKey;
  var res = UrlFetchApp.fetch(url).getContentText()
  var obj = JSON.parse(res);
  var imgData = obj.lighthouseResult.audits['final-screenshot'].details.data;
  var strImage = imgData.replace(/^data:image\/[a-z]+;base64,/, "")
  var blob = Utilities.newBlob(Utilities.base64Decode(strImage), "image/jpeg", "sample.jpeg");
  var presentation = SlidesApp.openById(presentationId)
  var page = presentation.getSlideById(slide_id)
  var position = {left:230, top: 87};
  var size = {width: 600, height: 220}
  page.insertImage(blob, position.left, position.top, size.width, size.height)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多