ダッシュボード用画像

GASで成績管理を効率化!EmbeddedChart.getBlobでグラフ付きレポートを自動生成

教育現場における成績管理は、教師にとって時間と労力を要する重要な業務です。特に、生徒の成績を分析し、視覚的に分かりやすいレポートを作成するには、多くの手間がかかります。本記事では、Google Apps Script(GAS)のEmbeddedChart.getBlob()メソッドを活用し、成績管理を効率化する方法を解説します。EmbeddedChart.getBlob()を使用することで、スプレッドシートに埋め込まれたグラフを画像として取得し、レポートに組み込むことが可能になります。これにより、手作業でのグラフ作成やコピー&ペーストといった煩雑な作業から解放され、より教育活動に集中できる環境を構築できます。

EmbeddedChart.getBlob()とは?

EmbeddedChart.getBlob()は、Google Apps ScriptのEmbeddedChartクラスに属するメソッドです。このメソッドは、スプレッドシートに埋め込まれたグラフを、画像データ(Blob)として取得するために使用されます。取得した画像データは、Googleドキュメントやメールに添付したり、Webサイトに埋め込んだりするなど、様々な用途に活用できます。

基本的な使い方

EmbeddedChart.getBlob()を使用するには、まず、グラフが埋め込まれているスプレッドシートとグラフオブジェクトを取得する必要があります。その後、getBlob()メソッドを呼び出すことで、グラフの画像データを取得できます。

// スプレッドシートを取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
// シートを取得
const sheet = ss.getSheetByName("成績データ");
// グラフを取得 (ここでは最初のグラフを取得)
const chart = sheet.getCharts()[0];
// グラフをBlobとして取得
const blob = chart.getAs('image/png').getBlob();

成績管理におけるEmbeddedChart.getBlob()の実装例

ここでは、成績管理におけるEmbeddedChart.getBlob()の具体的な実装例をいくつか紹介します。

1. 成績レポートの自動生成

生徒ごとの成績をまとめたレポートを自動生成する例です。各生徒の成績データからグラフを作成し、EmbeddedChart.getBlob()で画像として取得。それをGoogleドキュメントに挿入することで、個別の成績レポートを効率的に作成できます。

// スプレッドシートからデータを取得 (例:生徒名、各科目の点数)
function createStudentReport(studentName) {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("成績データ");
const data = sheet.getDataRange().getValues();

// 生徒のデータを検索
let studentData = null;
for (let i = 1; i < data.length; i++) { // 1行目はヘッダーと仮定
if (data[i][0] === studentName) {
studentData = data[i];
break;
}
}

if (!studentData) {
Logger.log("生徒が見つかりません: " + studentName);
return;
}

// グラフを作成 (例:棒グラフで各科目の点数を表示)
const chart = sheet.newChart()
.setChartType(Charts.ChartType.BAR)
.addRange(sheet.getRange(1, 2, data.length, 1)) // 科目名
.addRange(sheet.getRange(1, 3, data.length, 1)) // 点数
.setPosition(5, 5, 0, 0)
.build();
sheet.insertChart(chart);

// グラフをBlobとして取得
const blob = chart.getAs('image/png').getBlob();

// Googleドキュメントに挿入
const doc = DocumentApp.create(studentName + "成績レポート");
const body = doc.getBody();
const image = body.appendImage(blob);

doc.saveAndClose();
Logger.log("レポートを作成しました: " + doc.getUrl());
}

2. 保護者への成績通知メール

定期的に保護者へ成績通知メールを送信する際に、グラフを添付ファイルとして送信する例です。生徒の成績推移をグラフで示すことで、より分かりやすく、客観的な情報を提供できます。

function sendGradeReportToParents(studentName, parentEmail) {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("成績データ");

// (省略: 生徒の成績データ取得とグラフ作成)
const chart = sheet.getCharts()[0]; // グラフは事前にシートに作成されている前提
const blob = chart.getAs('image/png').getBlob();

// メールを送信
MailApp.sendEmail({
to: parentEmail,
subject: studentName + "さんの成績通知",
body: "添付ファイルをご確認ください。",
attachments: [{
fileName: studentName + "さんの成績.png",
content: blob.getBytes(),
mimeType: "image/png"
}]
});
}

3. ダッシュボードの作成

教職員向けのダッシュボードを作成し、生徒全体の成績状況を可視化する例です。複数のグラフをEmbeddedChart.getBlob()で取得し、Googleサイトなどにまとめて表示することで、現状把握や改善策の検討に役立てることができます。

// (省略: 複数のグラフを作成し、Blobとして取得)
function createDashboard() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("成績データ");
const charts = sheet.getCharts();
let blobs = [];
for (let i = 0; i < charts.length; i++) {
blobs.push(charts[i].getAs('image/png').getBlob());
}

// (省略: Googleサイトに画像を埋め込む処理)
// 例:DriveApp.createFile(blobs[0]).setName(

PR

CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。

CodeCampで理想の働き方を実現しよう