特定のスライドに要素がなければ最上部に要素を追加して
すでに要素があればその下に要素を追加する
というコードを書いてみました。
コード.gs
function insertNewShape() {
var value = 'テキスト';
var url = 'SLIDE URL';
var slide = SlidesApp.openByUrl(url);
var slide0 = slide.getSlides()[0];
var nextTop = getNextTop(slide0);
var rect = slide0.insertShape(SlidesApp.ShapeType.RECTANGLE)
.setWidth(360)
.setHeight(60)
.setTop(nextTop)
.setLeft(0);
rect.getText().setText(value)
.getTextStyle().setFontSize(36);
rect.getFill().setSolidFill("#C9DAF8");
}
function getNextTop(slide0){
var elems = slide0.getPageElements();
var len = elems.length;
var nextTop;
if(len === 0){
nextTop = 0;
}else{
var lastElem = elems[len-1]
var lastTop = lastElem.getTop();
var lastHeight = lastElem.getHeight();
nextTop = lastTop + lastHeight;
}
return nextTop;
}
|
意訳この機能がやること テキストの値を決める スライドのURLを指定する 対象のスライドを取得する 先頭のスライドを取得する getNextTopにスライドを渡して結果を受け取る 長方形の図形を挿入する 幅を決める 高さを決める 上部からの位置を決める 左からの位置を決める テキストを取得して値を書き込む テキストのスタイルを取得して文字サイズを決める 塗りつぶしの色を指定する この機能がやること(対象のスライドを受け取る) スライド内の要素をすべて取得する 要素の数を取得する nextTop(上部からの距離) elemがなければ nextTopは0 elemがあれば 配置されている最後の要素を取得して その要素の上部からの位置を取得して その要素の高さを取得して nextTopを決めて 返す |
参考
Slides Service
https://developers.google.com/apps-script/reference/slides/