Googleスライドのページを自動作成したくて書いたコードです。
こういう二次元の配列があって
[["はれ", "晴れ", "hare"],["あめ", "雨", "ame"]];一つの配列をもとに一つのページを作りたい。
やりたいこと
- 高さを3等分した図形を配置してその中にテキストを入れたい
- ページの背景は白、枠線なし
- テキストは中央に揃えたい
- 一番上のテキストは下揃えにしたい
- 真ん中のテキストは上下も中央に揃えたい
- 一番下のテキストは上揃えにしたい
- 上中下それぞれのテキストの色とサイズを指定したい
コード.gs
const slideUrl = "https://docs.google.com/presentation/d/SLIDE_ID/edit#slide=id.p";
const textColor = ["#b7b7b7", "#000000", "#b7b7b7"];
const contentAlignment = SlidesApp.ContentAlignment
const fontSize = 60;
const valuesArray = [["はれ", "晴れ", "hare"],["あめ", "雨", "ame"]];
function insertNewPage() {
const slide = SlidesApp.openByUrl(slideUrl);
const pageWidth = slide.getPageWidth();
const pageHight = slide.getPageHeight();
const height = [0, pageHight/3, (pageHight/3)*2];
for(let i = 0; i < valuesArray.length; i++) {
const values = valuesArray[i];
createPage(slide, pageWidth,pageHight, height, textColor, contentAlignment, values);
}
}
function createPage(slide, pageWidth, pageHight, height, textColor, contentAlignment, values) {
const slides = slide.getSlides();
const newPage = slide.insertSlide(slides.length)
const position = [contentAlignment.BOTTOM, contentAlignment.MIDDLE, contentAlignment.TOP];
for(let i = 0; i < values.length; i++) {
const rect = newPage.insertShape(SlidesApp.ShapeType.RECTANGLE)
.setWidth(pageWidth)
.setHeight(pageHight/3)
.setTop(height[i])
.setLeft(0);
rect.getText().setText(values[i])
.getTextStyle().setFontSize(fontSize).setForegroundColor(textColor[i]);
rect.getFill().setSolidFill("#FFFFFF");
rect.getBorder().setTransparent();
rect.getText().getParagraphStyle().setParagraphAlignment(SlidesApp.ParagraphAlignment.CENTER);
rect.setContentAlignment(position[i]);
}
}
|
参考
Editing and styling text
setContentAlignment(contentAlignment)
Enum ContentAlignment
Enum ParagraphAlignment
