特定のスライドに要素がなければ最上部に要素を追加して
すでに要素があればその下に要素を追加する
というコードを書いてみました。
コード.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/