LANG SELRCT

コードを書く場所についてはこちら

2018年11月24日土曜日

Google Slideに要素を追加する


特定のスライドに要素がなければ最上部に要素を追加して
すでに要素があればその下に要素を追加する
というコードを書いてみました。



コード.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/