如何解决重新运行将Google表格数据注入Google幻灯片的脚本时,如何清除所有现有数据?
我有一个流程,可将数据从Google表格发送到Google幻灯片。对于Google表格中的每一行,它将生成一张幻灯片。当我进行初次运行时,它工作正常。但是,当我在Google表格中添加新行或删除现有行时,我的幻灯片当前无法正确更新。
问题1:我有2个初始行(请参阅下文),然后添加新行,然后脚本生成了初始2张幻灯片以及3张其他幻灯片(初始2张幻灯片+新幻灯片),这些重复导致重复。 / p>
问题2:当我在Google表格中删除一行然后重新运行脚本时,(已删除行的)幻灯片仍然存在,并且没有从卡座中删除。
我认为最简单的方法是删除所有已填充的幻灯片,仅使用原始幻灯片(带有变量),然后开始重新填充(请参见下面的原始幻灯片)。
这是我运行的脚本:
function generateSlides() {
var dataSpreadsheetUrl = "https://docs.google.com/spreadsheets/7Nsah";
var ss = SpreadsheetApp.openByUrl(dataSpreadsheetUrl);
var deck = SlidesApp.getActivePresentation();
var sheet = ss.getSheetByName('tab_1');
var values = sheet.getRange('A2:B1000').getValues();
var slides = deck.getSlides();
var templateSlide = slides[1];
var presLength = slides.length;
values.forEach(function(page){
if(page[0]){
var Email = page[1];
var Name = page[0];
templateSlide.duplicate(); //duplicate the template page
slides = deck.getSlides(); //update the slides array for indexes and length
newSlide = slides[2]; // declare the new page to update
var shapes = (newSlide.getShapes());
shapes.forEach(function(shape){
shape.getText().replaceAllText('{{Email}}',Email);
shape.getText().replaceAllText('{{Name}}',Name);
});
presLength = slides.length;
newSlide.move(presLength);
} // end our conditional statement
}); //close our loop of values
//Remove the template slide
templateSlide.remove();
}
这是每次运行时都已填充的原始幻灯片(因此被问题的第一轮覆盖)。
因此,问题在于,首次运行后,原始幻灯片表单不再存在,因为它已用“名称/电子邮件”填充。但是,在以后的每次运行中,我都想再次使用原始幻灯片,并删除所有已有的幻灯片,使其具有冲洗效果。我该怎么做?任何帮助表示赞赏!谢谢
解决方法
不幸的是,Google Slides API因此Google Apps Script没有提供一种简单的方法来完成您想要的工作。
更简单的解决方案是使用占位符制作幻灯片的副本并将其替换在副本上,而不是使用“原始”。
另一种选择是您以某种方式设置脚本的形状ID(唯一对象ID)和文本位置,然后使用该数据更新该内容。
资源
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。