如何在 Google 幻灯片 apt 脚本 replaceAllText 中执行请求
How do I execute requests in Google slides apt script replaceAllText
我正在玩一个动态标牌项目,需要一点帮助来完成幻灯片中的一些 GAS。我想要做的就是用 Google 电子表格中(一个单元格)的一些文本替换活动演示文稿中的一些文本。我想我的 Request 语法是正确的,但不确定如何在当前演示文稿上执行 Request,因为我尝试的所有操作似乎都失败了。任何帮助将非常感激。下面的代码包括复制一些幻灯片等的完整脚本(并且正在运行) - 这只是我需要帮助的最后一个请求部分...
function updateRBFixtures() {
var srcPresentationId = "1zRvc0H64yvxxxxxxxxxxxxxznmb2usZ_4w6bvRA";
var copysrcSlideIndex = 0;
var copydstSlideIndex = 1;
var src = SlidesApp.openById(srcPresentationId).getSlides()[copysrcSlideIndex];
SlidesApp.getActivePresentation().insertSlide(copydstSlideIndex, src);
var selection = SlidesApp.getActivePresentation().getSelection();
var slide = SlidesApp.getActivePresentation().getSlides()[0];
slide.remove();
var dataRangeNotation = 'slideInfo!B2:B2';
var value =
SpreadsheetApp.openById("1jiYxxxxxxxxxxxxxxMqtwXnc").getRange(dataRangeNotation).getValues();
requests = [{
replaceAllText: {
containsText: {
text: '{fixtureOneMatch}',
matchCase: false
},
replaceText: value
}
}];
}
这个答案怎么样?
修改点:
getValues()
returns 二维数组。在您的情况下,该值是从一个单元格中检索的。所以你可以使用 getValue()
.
- 在你的情况下,插入幻灯片后,我认为需要使用
saveAndClose()
。
- 在您的脚本中,未使用
requests
。
当以上几点反映到你的脚本中,就会变成下面这样。
修改后的脚本:
从:
SlidesApp.getActivePresentation().insertSlide(copydstSlideIndex, src);
var selection = SlidesApp.getActivePresentation().getSelection();
var slide = SlidesApp.getActivePresentation().getSlides()[0];
slide.remove();
var dataRangeNotation = 'slideInfo!B2:B2';
var value =
SpreadsheetApp.openById("1jiYxxxxxxxxxxxxxxMqtwXnc").getRange(dataRangeNotation).getValues();
requests = [{
replaceAllText: {
containsText: {
text: '{fixtureOneMatch}',
matchCase: false
},
replaceText: value
}
}];
到:
var s = SlidesApp.getActivePresentation();
s.insertSlide(copydstSlideIndex, src);
s.getSlides()[0].remove();
s.saveAndClose();
var dataRangeNotation = 'slideInfo!B2:B2';
var value = SpreadsheetApp.openById("###").getRange(dataRangeNotation).getValue();
var requests = [{
replaceAllText: {
containsText: {
text: '{fixtureOneMatch}',
},
replaceText: value,
}
}];
Slides.Presentations.batchUpdate({requests: requests}, s.getId());
参考文献:
我正在玩一个动态标牌项目,需要一点帮助来完成幻灯片中的一些 GAS。我想要做的就是用 Google 电子表格中(一个单元格)的一些文本替换活动演示文稿中的一些文本。我想我的 Request 语法是正确的,但不确定如何在当前演示文稿上执行 Request,因为我尝试的所有操作似乎都失败了。任何帮助将非常感激。下面的代码包括复制一些幻灯片等的完整脚本(并且正在运行) - 这只是我需要帮助的最后一个请求部分...
function updateRBFixtures() {
var srcPresentationId = "1zRvc0H64yvxxxxxxxxxxxxxznmb2usZ_4w6bvRA";
var copysrcSlideIndex = 0;
var copydstSlideIndex = 1;
var src = SlidesApp.openById(srcPresentationId).getSlides()[copysrcSlideIndex];
SlidesApp.getActivePresentation().insertSlide(copydstSlideIndex, src);
var selection = SlidesApp.getActivePresentation().getSelection();
var slide = SlidesApp.getActivePresentation().getSlides()[0];
slide.remove();
var dataRangeNotation = 'slideInfo!B2:B2';
var value =
SpreadsheetApp.openById("1jiYxxxxxxxxxxxxxxMqtwXnc").getRange(dataRangeNotation).getValues();
requests = [{
replaceAllText: {
containsText: {
text: '{fixtureOneMatch}',
matchCase: false
},
replaceText: value
}
}];
}
这个答案怎么样?
修改点:
getValues()
returns 二维数组。在您的情况下,该值是从一个单元格中检索的。所以你可以使用getValue()
.- 在你的情况下,插入幻灯片后,我认为需要使用
saveAndClose()
。 - 在您的脚本中,未使用
requests
。
当以上几点反映到你的脚本中,就会变成下面这样。
修改后的脚本:
从: SlidesApp.getActivePresentation().insertSlide(copydstSlideIndex, src);
var selection = SlidesApp.getActivePresentation().getSelection();
var slide = SlidesApp.getActivePresentation().getSlides()[0];
slide.remove();
var dataRangeNotation = 'slideInfo!B2:B2';
var value =
SpreadsheetApp.openById("1jiYxxxxxxxxxxxxxxMqtwXnc").getRange(dataRangeNotation).getValues();
requests = [{
replaceAllText: {
containsText: {
text: '{fixtureOneMatch}',
matchCase: false
},
replaceText: value
}
}];
到:
var s = SlidesApp.getActivePresentation();
s.insertSlide(copydstSlideIndex, src);
s.getSlides()[0].remove();
s.saveAndClose();
var dataRangeNotation = 'slideInfo!B2:B2';
var value = SpreadsheetApp.openById("###").getRange(dataRangeNotation).getValue();
var requests = [{
replaceAllText: {
containsText: {
text: '{fixtureOneMatch}',
},
replaceText: value,
}
}];
Slides.Presentations.batchUpdate({requests: requests}, s.getId());