1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Google Apps ScriptAdvent Calendar 2023

Day 17

GASとGoogleスライドとスプレッドシートで作る席替えシステム

Last updated at Posted at 2023-12-15

ドキドキ!あの子の隣に座るのだぁれ?

はい、今日もGAS書いていきますね。
今日のお題はスライドとスプレッドシートの基本的な連携ですね。

スライドのテキストボックスにいちいちテキスト書くの面倒くさい・・・。

そうですよね、(そうでもない?)てなわけで、スプレッドシートに書いたテキストがスライドに反映されるGAS書いていきましょう。

まずはスプレッドシートに1列に名前を書きます。

image.png

次に、スライドに人数分のテキストボックスを作ります。

image.png

スライドにコンテナバインドスクリプトを書きます。

// コンテナバインドスクリプト

const SPREADSHEET_URL = 'ここにスプレッドシートのURL入れてね'; // あなたのスプレッドシートのURLに変更してください

function onOpen() {
  const ui = SlidesApp.getUi();
  ui.createMenu('カスタムメニュー')
    .addItem('スライドを更新', 'updateSlideTextBoxes')
    .addToUi();
}

function updateSlideTextBoxes() {
  // スプレッドシートのデータを読み取る
  const spreadsheet = SpreadsheetApp.openByUrl(SPREADSHEET_URL);
  const sheet = spreadsheet.getSheetByName('氏名を書いているシート名を入れてね'); // あなたのシート名に変更してください
  const dataRange = sheet.getDataRange();
  const names = dataRange.getValues();

// 氏名をランダムに並び替える
  names.sort(() => Math.random() - 0.5);

// アクティブなスライドを取得する
  const presentation = SlidesApp.getActivePresentation();
  const slides = presentation.getSlides();

// スライド内のテキストボックスに名前を反映させる
  for (let i = 0; i < slides.length; i++) {
    const slide = slides[i];
    const pageElements = slide.getPageElements();

for (let j = 0; j < names.length; j++) {
      const textbox = pageElements[j]; // 各テキストボックス

if (textbox) {
        textbox.asShape().getText().setText(names[j][0]);
      }
    }
  }
}

これでメニューからスライドを更新できます。

並びが変わった!

image.png

時間でトリガーつけて、フリーデスクの席割りやらレクリエーションやらにお使いくださいね。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?