如何将 Google 表格中的图像上传到 Google 幻灯片
How do I upload image from Google Sheets to Google Slides
如标题所示,我目前有代码截取网站的屏幕截图并将其放在我的 Google 表格中。我的问题是如何将该图像传输到演示文稿中?图像可能会改变,所以如果可以动态改变会更好。我看到了 class 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))
}
}
感谢 Tanaike 的指导,我有点想明白了。我没有从 pagespeed insights 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)
如标题所示,我目前有代码截取网站的屏幕截图并将其放在我的 Google 表格中。我的问题是如何将该图像传输到演示文稿中?图像可能会改变,所以如果可以动态改变会更好。我看到了 class 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))
}
}
感谢 Tanaike 的指导,我有点想明白了。我没有从 pagespeed insights 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)