GoogleスライドとスプレッドシートをGASでスマートに連携する方法

Google スライドとスプレッド シートを連携できると、作業がずっと楽になるんだろうけど、どうやって始めればいいのか…分からないよ。
猫男
猫男
catman
catman
心配しなくていい。catmanが「GASでGoogle スライドとスプレッド シートを連携する方法」を教えよう。

GASを使ったGoogle スライドとスプレッド シートの連携

Google Apps Script(GAS)を使うと、Google スライドスプレッド シートを連携し、さまざまな自動化を行える。

Google スライドとスプレッド シートを準備する

まずはGoogle スライドとスプレッド シートのテンプレートを用意し、それぞれのIDを取得しよう。スプレッドシートには移行したいデータをまとめておくこと。

スライドのURL例:https://docs.google.com/presentation/d/{スライドID}/edit

スプレッドシートのURL例:https://docs.google.com/spreadsheets/d/{スプレッドシートID}/edit

GASを設定してGoogle スライドを操作する

GASを使って、スライドのテキストボックスを書き換えることができる。これで、スプレッドシートのデータをスライドに反映させられるのさ。


function updateSlideText() {
 var presentationId = "スライドID";
 var slide = SlidesApp.openById(presentationId);
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
 var range = sheet.getRange("A1"); 
 var data = range.getValue();
 slide.getSlides()[0].getPageElements()[0].asShape().getText().setText(data); 
}

このスクリプトでは、最初のスライドと最初の要素を選び、スプレッドシートのA1セルの値でテキストを更新している。

スライドにテーブルを追加しよう

複数のデータをテーブルとしてスライドに反映させたい場合もある。このスクリプトで、スライドにテーブルを挿入できる。


function addTableToSlide() {
 var presentationId = "スライドID";
 var slide = SlidesApp.openById(presentationId).getSlides()[0];
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
 var range = sheet.getRange("A1:B2"); 
 var values = range.getValues();
 var table = slide.insertTable(0, 0, values.length, values[0].length);
 
 for (var i = 0; i < values.length; i++) {
 for (var j = 0; j < values[i].length; j++) {
 table.getCell(i, j).getText().setText(values[i][j].toString());
 }
 }
}

このスクリプトはスプレッドシートから値を取得し、その値でスライドにテーブルを挿入する。

わあ、スライドに自動でデータが入れられるなんて画期的だね!これで発表資料作成も楽になりそう。
猫男
猫男

まとめ:GASでGoogleスライドとスプレッドシートを連携する利点

  • スライドのテキストをスプレッドシートのデータで自動更新
  • スライドにテーブルを挿入して、データを視覚的に提示
  • 作業の効率を大幅に向上させ、ミスを減らすことができる
これで作業も効率的になるし、もっとスライドをカスタマイズできるね!
猫男
猫男
catman
catman
まさにその通りだ。自動化を駆使してさらに効率的にこなしていこう。

練習問題

以下のスクリプトを見て、スライドのテキストをスプレッドシートのデータで更新する際に、セル “B3” のデータを「スライドの2番目の要素」に挿入するには、どのようにスクリプトを変更すれば良いか考えてみよう。


function updateSlideText() {
 var presentationId = "スライドID";
 var slide = SlidesApp.openById(presentationId);
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
 // 以下を修正
 var range = sheet.getRange("A1"); 
 var data = range.getValue();
 slide.getSlides()[0].getPageElements()[0].asShape().getText().setText(data); 
}

 

 

解答と解説

スライドの2番目の要素にセル “B3” の値を反映させるためには、取得するセルの範囲とページ要素を変更する必要がある。


function updateSlideText() {
 var presentationId = "スライドID";
 var slide = SlidesApp.openById(presentationId);
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
 var range = sheet.getRange("B3"); // "B3"のデータを取得
 var data = range.getValue();
 slide.getSlides()[0].getPageElements()[1].asShape().getText().setText(data); // 2番目の要素
}

変更点は次の通り:

  • sheet.getRange(“B3”);: スプレッドシートのセル「B3」の値を取得
  • slide.getSlides()[0].getPageElements()[1]: スライドの2番目のテキスト要素を選択