ドキドキ!あの子の隣に座るのだぁれ?
はい、今日もGAS書いていきますね。
今日のお題はスライドとスプレッドシートの基本的な連携ですね。
スライドのテキストボックスにいちいちテキスト書くの面倒くさい・・・。
そうですよね、(そうでもない?)てなわけで、スプレッドシートに書いたテキストがスライドに反映されるGAS書いていきましょう。
まずはスプレッドシートに1列に名前を書きます。
次に、スライドに人数分のテキストボックスを作ります。
スライドにコンテナバインドスクリプトを書きます。
// コンテナバインドスクリプト
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]);
}
}
}
}
これでメニューからスライドを更新できます。
並びが変わった!
時間でトリガーつけて、フリーデスクの席割りやらレクリエーションやらにお使いくださいね。