如何用 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}}
且未设置这些占位符,则无法实现您的目标。请注意这一点。
参考:
我想用一张图片替换 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]
.
这样的话,下面的修改怎么样?
修改后的脚本:
在此脚本中,{{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}}
且未设置这些占位符,则无法实现您的目标。请注意这一点。