スライド→スプレッドシートにテキスト出力→指定して変換
結構実用的だと思います。
フォントや色の加工ができたらさらにでしょうが、月例報告などのテキスト加工に使えそうな気がします。
事前準備
①スライドの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);
}
}
// 図形がテキストボックス以外の場合
コメント