问题描述
如何使用 google Script 而不是 Google Script API 获得相同的结果。我正在尝试使用 Google Script 在 Google 幻灯片上用图片替换文本。提前谢谢你...
function insertimageCentered()
{
var presentation = SlidesApp.getActivePresentation();
var requests = [{
"replaceAllShapesWithImage": {
"imageUrl": "https://docs.google.com/drawings/d/e/2PACX-1vR5mi6ujksb_2WtTFmk39IPYBIBlJ6WkzM1nsys9cT4Wquik627DDIRXzoYTgHPKX3fcvJzG9inDmJt/pub?w=960&h=720","imageReplaceMethod": "CENTER_INSIDE","pageObjectIds": [presentation.getSlides()[0].getobjectId()],"containsText": {
"text": "{{CENTERED_SHAPE}}","matchCase": false
}
}
}];
Slides.Presentations.batchUpdate({'requests': requests},presentation.getId());
}
解决方法
我相信你的目标如下。
- 您想将使用 Google Slides API 的脚本转换为使用 Slides Service 的脚本而不使用 Slides API。
- 从
How do I get the same result using google Script,not with the Google Script API.
开始,我了解到您认为的Google Script API
可能是指 Google Slides API。通过这个,我认为你的目标和上面一样。
- 从
在这种情况下,我认为可以使用replaceWithImage
的方法。使用该方法时,脚本如下。
示例脚本:
请将以下脚本复制并粘贴到 Google 幻灯片的脚本编辑器中。并且,请运行myFunction
的函数。
function myFunction() {
var searchText = "{{CENTERED_SHAPE}}";
var imageUrl = "https://docs.google.com/drawings/d/e/2PACX-1vR5mi6ujksb_2WtTFmk39IPYBIBlJ6WkzM1nsys9cT4Wquik627DDIRXzoYTgHPKX3fcvJzG9inDmJt/pub?w=960&h=720";
// 1. Retrieve 1st slide.
var presentation = SlidesApp.getActivePresentation();
var slide = presentation.getSlides()[0];
// 2. Replace the shape which has the text of "searchText" with the image of "imageUrl".
slide.getShapes().forEach(s => {
if (s.getText().asString().toLocaleUpperCase().includes(searchText.toLocaleUpperCase())) {
s.replaceWithImage(imageUrl);
}
});
}
- 在您的脚本中,使用了
"matchCase": false
。在上面的脚本中,我为此使用了if (s.getText().asString().toLocaleUpperCase().includes(searchText.toLocaleUpperCase())) {
。当您要使用"matchCase": true
时,请将其修改为if (s.getText().asString().includes(searchText)) {
。 - 并且,如果您想用图片替换只有
{{CENTERED_SHAPE}}
文本的形状,请将其修改为if (s.getText().asString().trim() == searchText) {
。