Google apps script 为幻灯片设置特定ID
我有一个谷歌幻灯片主文档,从中我将特定幻灯片复制到另一个谷歌幻灯片文档中。 但是当我复制幻灯片时,我想给它一个特定的ID(Google apps script 为幻灯片设置特定ID,google-apps-script,google-slides,Google Apps Script,Google Slides,我有一个谷歌幻灯片主文档,从中我将特定幻灯片复制到另一个谷歌幻灯片文档中。 但是当我复制幻灯片时,我想给它一个特定的ID(,例如幻灯片编号-001) 我通过复制幻灯片来实现这一点,然后用我想要的ID复制副本,然后删除副本。这是可行的,但我认为这远不是理想的解决方案 如果有更好的方法,你能帮我吗? 我找不到任何用于此的函数,例如setObjectID()。很抱歉,没有专门设置幻灯片ID的方法。此外,不建议设置对象的幻灯片ID,因为它已在后台自动创建,这将违反直觉,同时也会浪费资源。这就是为什么它没
,例如幻灯片编号-001
)
我通过复制幻灯片来实现这一点,然后用我想要的ID复制副本,然后删除副本。这是可行的,但我认为这远不是理想的解决方案
如果有更好的方法,你能帮我吗?
我找不到任何用于此的函数,例如
setObjectID()
。很抱歉,没有专门设置幻灯片ID的方法。此外,不建议设置对象的幻灯片ID,因为它已在后台自动创建,这将违反直觉,同时也会浪费资源。这就是为什么它没有作为一种方法提供
我建议创建一个字典来保存幻灯片编号和幻灯片ID的配对
我创建了一个使用该思想的示例代码
代码:
函数集字典(){
//我有5张幻灯片作为样本
var presentation=SlidesApp.getActivePresentation();
var slides=presentation.getSlides();
var字典={};
//将对象ID设置为键“Slide_num-”的值
slides.forEach(函数(幻灯片、索引){
字典[“Slide_num-”+paddleadingzeros(索引+1,3)]=Slide.getObjectId();
});
//在您的情况下,复制幻灯片后,将值“slide.getObjectId()”指定给键“slide_num-”
//样本:
//将第五张幻灯片背景设置为红色
var slide=presentation.getSlideById(字典[“slide_num-005”]);
log(slide.getBackground().setSolidFill(255,0,0));
}
函数padLeadingZeros(数量、大小){
//函数,该函数根据大小向数字追加0
//当num为“1”且大小为“3”时返回“001”
var s=num+“”;
而(s.长度<尺寸){
s=“0”+s;
}
返回s;
}
这样做的好处是减少了API调用,使其更独立于API
请参阅类幻灯片中可用方法列表的参考
参考:
如果这不是您想要/需要的解决方案,我真诚道歉。非常感谢您的回答和信息。我是谷歌开发者的新手,所以,这对我很有帮助。我真的很喜欢你的想法,我认为这是一个很好的解决办法。我将在脚本中实现它,因为它比我的解决方案好得多。再次感谢你,非常感谢。嗨@Martin,谢谢你的感谢。Stackoverflow社区非常乐意帮助您解决这些问题。祝你的项目好运。
function setDictionary() {
// I have 5 slides as sample
var presentation = SlidesApp.getActivePresentation();
var slides = presentation.getSlides();
var dictionary = {};
// Set Object ID as value to key "Slide_num-<number>"
slides.forEach(function (slide, index) {
dictionary["Slide_num-" + padLeadingZeros(index + 1, 3)] = slide.getObjectId();
});
// In your case, after copying the slide, assign the value "slide.getObjectId()" to the key "Slide_num-<number>"
// Sample:
// Sets 5th slide background to red
var slide = presentation.getSlideById(dictionary["Slide_num-005"]);
Logger.log(slide.getBackground().setSolidFill(255,0,0));
}
function padLeadingZeros(num, size) {
// Function that appends 0s to the number based on the size
// Returns "001" when num is "1" and size is "3"
var s = num + "";
while (s.length < size) {
s = "0" + s;
}
return s;
}