【GAS】スプレッドシートからスライドに自動転記する方法

本記事では、

  • スプレッドシートの各セルに入力された値を
  • スライドのテキストボックスやテーブルのセルに
  • ワンクリックで自動転記する

方法を、実例(スプレッドシートに入力した月毎の売上データを、会議資料となるスライドに自動転記)を用いて紹介します。

このようなスプレッドシート自動転記ツールを作成できます
「スライドに転記」ボタンをクリックすると・・・
スライドのテキストボックスやテーブルに、値が自動的にセットされます!

実装の流れ

  1. スプレッドシートとスライドの準備(ここへ飛ぶ
  2. Apps Scriptを起動してコードを記述(ここへ飛ぶ
  3. スプレッドシートに転記ボタンの設置(ここへ飛ぶ
  4. ボタンをクリックし、Googleアカウントと連携(ここへ飛ぶ
STEP

スプレッドシートとスライドの準備

Googleスプレッドシートを立ち上げて、転記したい内容を入力するフォーマットを作成します。
本記事では、以下のような月間の売上・経費・粗利を顧客別に纏めた「販売成績フォーマット」を用意しました。

スプレッドシート(月例会議フォーマット_販売成績)
※「スライドに転記」ボタンは後ほど解説します。

続いてGoogleスライドを立ち上げて、転記される側のフォーマットを作成します。
本記事では、以下のような「月例会議資料」をイメージしたフォーマットを用意しました。

スライド(月例会議フォーマット)
月と担当者名を入れる部分には空欄のテキストボックス、顧客名や売上を入れる部分にはテーブルをセットしました。

スライドにセットした各種シェイプ(テキストボックスなど)は、次のステップで要素を取得しやすいようにタイトルを付けておきます。以下のように、転記させたいシェイプを選択して右クリック → 「代替テキスト」→「高度なオプション」を選択すると、それぞれのシェイプにタイトルを追加することができます。

本記事では、以下のようにタイトルを追加しました。

  • 「月」を転記するテキストボックス → month
  • 「担当者名」を転記するテキスト → pic

テーブルにもタイトルを追加できますが、本記事ではテーブルは1つしかないのでタイトルは追加しませんでした。テーブルが複数ある場合は、同じようにタイトルを付けて識別・取得しやすくする方がベターです。

STEP

Apps Scriptを起動してコードを記述

続いてApps Scriptを起動します。
開いているスプレッドシートの内容を取得し、先ほど用意したスライドに転記するためのコードを記述します。

「コード.js」が開かれていると思うので、右側にコードを記述します。
本実装では以下コードを記述し、「スプレッドシートからスライドに転記」というタイトルを設定しました。

function transferSpreadsheetToSlide() {
  // スプレッドシートの情報
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // 転記したいセルを指定
  const month = sheet.getRange("A1").getValue(); // 月
  const pic = sheet.getRange("D1").getValue(); // 担当者
  const salesInfo = [
    [sheet.getRange("A3").getValue(), sheet.getRange("B3").getValue(), sheet.getRange("C3").getValue(), sheet.getRange("D3").getValue()],
    [sheet.getRange("A4").getValue(), sheet.getRange("B4").getValue(), sheet.getRange("C4").getValue(), sheet.getRange("D4").getValue()],
    [sheet.getRange("A5").getValue(), sheet.getRange("B5").getValue(), sheet.getRange("C5").getValue(), sheet.getRange("D5").getValue()],
    [sheet.getRange("A6").getValue(), sheet.getRange("B6").getValue(), sheet.getRange("C6").getValue(), sheet.getRange("D6").getValue()]
  ]; // 顧客・売上・経費・粗利
  
  // スライド(1枚目)の情報を取得
  const slideId = "XXXXXXXXXXXXXXXXXXXX"; // GoogleスライドのIDを指定
  const slide = SlidesApp.openById(slideId);
  const firstSlide = slide.getSlides()[0]; // 1枚目のスライドを指定
  const shapes = firstSlide.getShapes(); // スライド内の図形を取得
  const monthTextBox = shapes.find(s => s.getTitle() === "month"); // 「月」をセットするテキストボックスを取得
  const picTextBox = shapes.find(s => s.getTitle() === "pic"); // 「担当者名」をセットするテキストボックスを取得
  const table = firstSlide.getTables()[0]; // スライド内のテーブルを取得

  // テキストボックスに値をセット
  monthTextBox.getText().setText(month);
  picTextBox.getText().setText(pic);

  // テーブルに情報をセット
  for (let row = 1; row < table.getNumRows(); row++) { // 1行目はヘッダーなのでスキップ
    for (let col = 0; col < table.getNumColumns(); col++) {
      table.getCell(row, col).getText().setText(salesInfo[row - 1][col]);
    }
  }
}
スプレッドシートの値を取得

const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()で現在アクティブな(開かれている)スプレッドシートを取得し、sheetという変数に代入します。続くsheet.getRange("セル番号").getValue()では、getRangeの引数に指定したセルの値を取得できます。売上や経費などのデータは配列形式で取得し、スライドに転記する際にfor文を用いてコードを簡素化しています。
配列でデータを取得する場合、取得する順番に注意してください。

スライド情報の取得

const monthTextBox = shapes.find(s => s.getTitle() === "month" && s.getText())で「月」情報を

monthTextBox.getText().setText(month);lidesApp.openById(slideId)で特定のスライドを取得できます。slideIdには取得したいスライドのIDを入力します。IDの確認は、取得したいスライドを開き、そのURLの以下赤字の部分です。

https://docs.google.com/presentation/d/この部分/edit#slide=id.xxxxxxx

続いて何枚目のスライドを取得するか(本記事では1枚目)を記述し、getShapes()getTables()を用いてスライド内のテキストボックスやテーブルを取得します。「月」「担当者名」をセットするテキストボックスは、STEP 1で追加したタイトル情報をもとにfind()を用いてそれぞれ取得します。

テキストボックスとテーブルに値を転記

getText().setText()でテキストボックスやテーブルのセルに値(文字列)をセットできます。テーブルへのセットはfor文を用いて、2行目以降(row = 0はスキップ)の各列にSTEP 1で取得した値をセットしていきます。

コードを記述できたら保存し、スプレッドシートに戻ります。

STEP

スライドに転記ボタンの設置

スプレッドシートの「挿入」タブから「図形描画」を選択し、図形とテキストを組み合わせボタンを作成します。
作成したボタンは、スプレッドシートの適当な位置に移動させます。

設置したボタンをクリックし、ボタン右の方に表示される「⋮」をクリックして「スクリプトを割り当て」を選択します。

ウィンドウが表示されるので、STEP 2で作成したメソッド名(本実装ではtransferSpreadsheetToSlide)を記入します。

STEP

ボタンをクリックし、Googleアカウントと連携

STEP 3で設置したボタンをクリックし、Googleアカウントと連携させると同時にスライドに転記されるかを確認します。
スクリプトを割り当てたボタンを初めてクリックすると、認証を求めるウィンドウが表示されるので、以下画像の通り認証を進めていきます。

認証作業は最初のみで、認証完了後は表示されません。

特に問題がなければコードが実行され、スプレッドシートの内容がスライドに転記されるはずです!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次