googleslideのテキストを、スプレッドシートと連携して一括で更新する【GAS】

未分類

スライド→スプレッドシートにテキスト出力→指定して変換

結構実用的だと思います。

フォントや色の加工ができたらさらにでしょうが、月例報告などのテキスト加工に使えそうな気がします。

事前準備

①スライドのGASにベタっと張り付ける

②シートを準備して、【シートID】【シート名】を指定する

利用方法

①シートからテキスト情報を書き出す

  → gaaa で実行

②書き変えたいテキストをシートに入力する

③textall で実行

/取り出すスクリプト
function gaaa() {
  // スライドのIDを指定します(編集が必要です)。
  // スライドを開いて取得します。
  var presentation = SlidesApp.getActivePresentation()
  // スライドのすべてのページを取得します。
  var slides = presentation.getSlides();
  // 図形の属性情報を格納する二次元配列を初期化します。
  var shapeAttributes = [];
  // ヘッダー行を追加します。
  var header = [
    'ページ番号',
    '図形番号',
    '図形種類',
    '幅',
    '高さ',
    '上位置',
    '左位置',
    '背景色',
    'テキスト' // テキスト情報を追加
    // '境界線の色' // 境界線の色を取得する場合は必要に応じて有効にする
  ];
  shapeAttributes.push(header);
  // 各ページごとに図形の属性を取得します。
  for (var i = 0; i < slides.length; i++) {
    var slide = slides[i];
    var shapes = slide.getShapes();
    for (var j = 0; j < shapes.length; j++) {
      var shape = shapes[j];
      var fill = shape.getFill(); // 塗りつぶし情報を取得します
      var backgroundColor = null;
      if (fill && fill.getSolidFill()) {
        backgroundColor = fill.getSolidFill().getColor();
      }
      var attributes = [
        i , // ページ番号 (0 が起点)
        j , // 図形番号 (0 が起点)
        shape.getShapeType(), // 図形種類を取得
        shape.getWidth(),
        shape.getHeight(),
        shape.getTop(),
        shape.getLeft(),
        backgroundColor, // 背景色
        shape.getText().asString() // テキスト情報を取得
        // shape.getBorder().getColor() // 境界線の色を取得する場合は必要に応じて有効にする
      ];
      shapeAttributes.push(attributes);
    }
  
  // 図形の属性情報をログに出力します。
  Logger.log(shapeAttributes);
    var sheet = SpreadsheetApp.openById("【シートID】").getSheetByName("【シート名】")
   sheet.getRange(1,1,shapeAttributes.length,shapeAttributes[0].length).setValues(shapeAttributes)
}
}
//書き換えるスクリプト
function textall() {
  // スライドのIDを指定
 var presentation = SlidesApp.getActivePresentation()
  var sheet = SpreadsheetApp.openById("【シートID】").getSheetByName("【シート名】")   
    var array = sheet.getDataRange().getValues()   
   Logger.log(array)
   //Logger.log(array[1][0])
   //Logger.log(array[1][1])
   //Logger.log(array[1][9])
    
for(i=1;i<array.length;i++){
  // 操作したいスライドページのインデックスを指定(0から始まります)
  var pageIndex = array[i][0];
// スライドページ内の特定の図形のインデックスを指定
  var shapeIndex = array[i][1];
  // スライドページを取得
  var slidePage = presentation.getSlides()[pageIndex];
  // 図形を取得
  var shape = slidePage.getShapes()[shapeIndex];
  var text = array[i][9]
Logger.log(text)
    shape.getText().setText(text);
  }
}
  // 図形がテキストボックス以外の場合

コメント

タイトルとURLをコピーしました