1

我正在尝试编写一个函数来使用 Google Apps 脚本从 Google 幻灯片演示文稿中删除笔记。

我浏览了这些示例,并假设我需要通过使用https://developers.google.com/slides/how调用演讲者笔记来将其与https://developers.google.com/slides/samples/writing#delete_a_page_or_page_element之类的内容相匹配-tos/notes,但我无法建立链接。

Google Apps 脚本的新手,感谢您的帮助。

4

3 回答 3

1

感谢最初的脚本!不幸的是,它对我不起作用,经过几次尝试,我使它起作用了:

function clearNotes(){
    var presentation = SlidesApp.getActivePresentation();
    var presentationId = presentation.getId();
    var slides = presentation.getSlides();

    var requests = [];

    slides.forEach(function(slide, i) {
        var slideNote = slide.getObjectId(); 
        var slideNotesPage = slide.getNotesPage();
        var shape = slideNotesPage.getSpeakerNotesShape();
        var shapeText = shape.getText();

        if(shapeText != undefined){

           shapeText.clear();
        }
    })
    if(requests.length > 0){
        var batchUpdateResponse = Slides.Presentations.batchUpdate({requests: requests}, presentationId);
    }
}

作为一个新手,它涉及大量的尝试和错误,调试并遵循此处的指南:https://developers.google.com/apps-script/reference/slides/text-range.html#clear()

到目前为止,这是我发现批量删除 Google 幻灯片演示文稿中所有笔记的唯一解决方案。

希望这会有所帮助,拉法。

于 2019-10-25T23:07:25.297 回答
0

Google has now integrated this option into the Slides program. When you make a copy you can choose/check to include notes or not.

Check boxes show options when creating copy of current Slides presentation

于 2021-04-05T20:27:27.133 回答
0

这是我的做法。

function clearNotes(){
    var presentation = SlidesApp.getActivePresentation();
    var presentationId = presentation.getId();
    var slides = presentation.getSlides();

    var requests = [];

    slides.forEach(function(slide, i) {
        var slideNote = Slides.Presentations.Pages.get(presentationId, slide.getObjectId()); 
        var slideNoteId = JSON.parse(slideNote).slideProperties.notesPage.notesProperties.speakerNotesObjectId;

        var slideNotesPage = JSON.parse(slideNote).slideProperties.notesPage;
        var shapeText = slideNotesPage.pageElements[1].shape.text;

        if(shapeText != undefined){
        requests.push({
            deleteText: {objectId: slideNoteId,textRange:{type: 'ALL'}}
        });
        }
    })
    if(requests.length > 0){
        var batchUpdateResponse = Slides.Presentations.batchUpdate({requests: requests}, presentationId);
    }
}

希望能帮助到你。

于 2018-12-20T11:12:19.530 回答