Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add a new slide with new layout on Google Slides?

The following is what I did:

  1. Created a new presentation on Google Slides,

  2. Edited one of the predefined layouts on the Master Layout view in order to have a new layout that I want to use,

  3. Edited the name of the Master Layout to "Meeting",

  4. Edited the name of the predefined layout that I want to use to "Office".

My problem is that on Google Script I am not being able to reference this specific predefined layout that I want to use.

So far, my code is the following:

function AddSlideToPresentatio() {

// The following line opens my presentation
var presentation = SlidesApp.openById('PresentationID');

//Now, I try to use my new layout
  presentation.appendSlide("Office");
}

I have absolutely no idea on why this doesn't work. When I try to run it, I get the error:

"Cannot find method appendSlide(string). (line 6, file "Office").

The following are some of the combinations that I tried, and they get me similar errors:

presentation.appendSlide('Office');
presentation.appendSlide(Office);
presentation.appendSlide("Meeting - Office");
presentation.appendSlide('Meeting - Office');
presentation.appendSlide(Meeting - Office);

If I just use presentation.appendSlide() it creates a new slide, but not with the layout that I want to use.

In the Google Apps Script Reference there are three methods:

  1. appendSlide(),
  2. appendSlide(layout),
  3. appendSlide(predefinedLayout)

However, I can't seem to understand what is the difference between that last two, because when I try to use them they seem to do the same thing.

like image 338
Rafael Pinheiro Avatar asked Nov 20 '17 07:11

Rafael Pinheiro


1 Answers

You are passing layout object's name for the appendSlide method, but you should pass LayoutObject parameter.

appendSlide(LayoutObject)

// The following line opens my presentation
var presentation = SlidesApp.openById('PresentationID');
// this will return an array of all the layouts
var layouts = presentation.getLayouts();

//if your first array item is the office layout
var newSlide = presentation.appendSlide(layouts[0]);

//Orelse you can search for your layout
var selectedLayout;
for(var item in layouts)
{
   //Logger.log(layouts[item].getLayoutName());
   if(layouts[item].getLayoutName() =='CUSTOM_1')
   {
     selectedLayout = layouts[item];
   }
}
var newSlide = presentation.appendSlide(selectedLayout);

PreDefinedLayout is an enum. It contains layouts that commonly found in presentations. Read all the available predefined layouts

use them as below;

presentation.appendSlide(SlidesApp.PredefinedLayout.SECTION_TITLE_AND_DESCRIPTION);
like image 138
iJay Avatar answered Sep 28 '22 06:09

iJay