如何用 Sheet 中的图像 URL 中的图像替换 Google 幻灯片中的占位符

How to replace a placeholder in Google Slide with an Image from a Image URL in Sheet

我想用一张图片替换 Google 幻灯片中的占位符,图片取自 Google Url Sheet.

我有一个脚本可以替换文本占位符并创建一个 Google 幻灯片,其中包含 Google Sheet.

中每一行的文本信息

我想添加正确的代码,以便脚本也从 Google Sheet 获取 URL 图像 link 并替换 [=] 中的图像占位符32=] 使用来自 Sheet 的嵌入 URL 图像的幻灯片,每一行代表一张幻灯片。

下面是我的代码

values.forEach(function(page){
if(page[0]){

var landingPage = page[0];
var sessions = page[1];
var newSessions = page[2];
var pagesPer = page[5];
var goalRate = page[7];
var goalValue = page[9];

defaultSlides = slides.getSlides();
defaultSlide = defaultSlides[1];
newSlide = defaultSlide;
newSlide2 = defaultSlides[2];

 var shapes = (newSlide.getShapes());
 shapes.forEach(function(shape){
   shape.getText().replaceAllText('{{landing page}}',landingPage);
   shape.getText().replaceAllText('{{sessions}}',sessions);
   shape.getText().replaceAllText('{{new sessions}}',newSessions);
   shape.getText().replaceAllText('{{pages per session}}',pagesPer);
   shape.getText().replaceAllText('{{goal rate}}',goalRate);
   shape.getText().replaceAllText('{{goal value}}',goalValue);
});
}

在代码中,“page”表示GoogleSheet中的一列。

我想在 Sheet 中为图像 URL 创建一个列,并在脚本中这样写,例如:

var imageUrl = page[10],

而不是 replaceAllText,我想用 Google Sheet.

中的图像 URL 替换 Google 幻灯片占位符

感谢您的帮助

我相信你的目标如下。

  • 对于 Google 幻灯片的第 2 页,您想将 "{{landing page}}", "{{sessions}}", "{{new sessions}}", "{{pages per session}}", "{{goal rate}}", "{{goal value}}" 的文本替换为文本。
  • 您想用从 var imageUrl = page[10] 中检索到的图像替换文本。

根据你的问题,我无法确认替换图片的文字。所以在这个答案中,作为示例占位符,{{image}} 被替换为 var imageUrl = page[10].

中 URL 的图像

这样的话,下面的修改怎么样?

修改后的脚本:

在此脚本中,{{image}} 被替换为 URL 的图像。所以请把{{image}}放到幻灯片的第2页。

var values = ###; // Please set your values.
var slides = SlidesApp.getActivePresentation(); // or SlidesApp.openById("###");

var defaultSlides = slides.getSlides();
values.forEach(function (page) {
  if (page[0]) {
    var landingPage = page[0];
    var sessions = page[1];
    var newSessions = page[2];
    var pagesPer = page[5];
    var goalRate = page[7];
    var goalValue = page[9];
    var imageUrl = page[10];
    var newSlide = defaultSlides[1];
    var texts = [
      ["{{landing page}}", landingPage],
      ["{{sessions}}", sessions],
      ["{{new sessions}}", newSessions],
      ["{{pages per session}}", pagesPer],
      ["{{goal rate}}", goalRate],
      ["{{goal value}}", goalValue]
    ];
    texts.forEach(t => newSlide.replaceAllText(...t));
    newSlide.getShapes().forEach(s => {
      if (s.getText().asString().trim() == "{{image}}") s.replaceWithImage(imageUrl);
    });
  }
});
  • 当此脚本为 运行 时,在幻灯片的第 2 页中,"{{landing page}}", "{{sessions}}", "{{new sessions}}", "{{pages per session}}", "{{goal rate}}", "{{goal value}}" 的文本将替换为 landingPage, sessions, newSessions, pagesPer, goalRate, goalValue。并且,{{image}} 替换为 var imageUrl = page[10] 中的 URL 的图像。

注:

  • 在您的脚本循环中,values 的第一个元素用于 Google 幻灯片的第二页。这是来自您的脚本。请注意这一点。

  • 为了用文本替换文本,我使用了texts数组和forEach。

  • 为了用图片替换文字,我通过搜索{{image}}的文字使用了replaceWithImage

  • 如果幻灯片的第 2 页没有占位符并且未设置 {{image}} 且未设置这些占位符,则无法实现您的目标。请注意这一点。

参考: