Googleスプレッドシートで作成したグラフを画像として保存したい場面は多いものです。しかし、グラフを1つずつ右クリックして保存するのは手間がかかります。特に大量のグラフを扱う場合は、一括でエクスポートする方法が必要です。この記事では、Apps Scriptを活用して複数のグラフを画像として一括出力する手順を詳しく解説します。スクリプトのコード例も示しますので、コピー&ペーストで簡単に実装できます。
【要点】複数グラフを画像ファイルとして一括エクスポートする方法
- Apps Scriptのグラフ画像化メソッド: スクリプト内で
chart.getAs('image/png')を使用して、グラフをPNG画像として取得します。 - Googleドライブへの保存: 取得した画像を
DriveApp.createFile()でドライブに保存します。ファイル名にはグラフタイトルやシート名を含められます。 - 全シートのグラフをループ処理:
SpreadsheetApp.getActiveSpreadsheet().getSheets()で全シートを取得し、各シート内の全グラフをループして画像出力します。
ADVERTISEMENT
目次
グラフの一括画像出力が必要な理由と基本的な仕組み
Googleスプレッドシートの標準機能では、グラフを画像として保存する際に手動操作が必要です。グラフを右クリックして「画像として保存」を選ぶか、グラフをコピーして画像編集ソフトに貼り付ける方法があります。これらの方法はグラフが数個なら問題ありませんが、10個や20個になると非常に非効率です。また、毎回同じ形式で出力したい場合、手動ではばらつきが生じます。
そこで役立つのがApps Scriptです。Googleスプレッドシートは組み込みのスクリプトエディタを持ち、JavaScriptベースのコードで操作を自動化できます。グラフオブジェクトにはgetAs()メソッドがあり、これを呼び出すことで画像データ(Blob)を取得できます。そのBlobをGoogleドライブに保存すれば、PNG形式の画像ファイルが完成します。スクリプトで全シートをループしながら各グラフを処理することで、一括出力が実現します。
Apps Scriptで複数グラフを一括エクスポートする手順
- スクリプトエディタを開く
Googleスプレッドシートを開き、メニューから「拡張機能」→「Apps Script」をクリックします。新しいタブでスクリプトエディタが開きます。 - スクリプトファイルにコードを記述する
デフォルトで「コード.gs」というファイルが開きます。以下のコードをコピー&ペーストしてください。function exportAllChartsToDrive() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
var folderName = ss.getName() + "_グラフ画像";
// フォルダがなければ作成
var folders = DriveApp.getFoldersByName(folderName);
var folder;
if (folders.hasNext()) {
folder = folders.next();
} else {
folder = DriveApp.createFolder(folderName);
}sheets.forEach(function(sheet) {
var charts = sheet.getCharts();
charts.forEach(function(chart, index) {
var title = chart.getOptions().get('title') || 'グラフ' + (index+1);
var safeTitle = title.replace(/[\/:*?"<>|]/g, '_');
var fileName = sheet.getName() + "_" + safeTitle + ".png";
var blob = chart.getAs('image/png').setName(fileName);
folder.createFile(blob);
});
});SpreadsheetApp.getUi().alert('完了しました。フォルダ「' + folderName + '」に画像を保存しました。');
} - スクリプトを保存して実行する
ツールバーの「保存」アイコンをクリックし、プロジェクト名を適宜設定します。次に「実行」ボタン(▶)をクリックします。初回実行時は権限の承認が必要です。表示されるダイアログで「許可」を選びます。 - 出力結果を確認する
スクリプトが正常に終了すると、Googleドライブのマイドライブ直下に「スプレッドシート名_グラフ画像」というフォルダが作成され、その中に各グラフのPNG画像が保存されます。ファイル名は「シート名_グラフタイトル.png」の形式です。グラフにタイトルがない場合は「グラフ1」「グラフ2」のように連番が付きます。
スクリプトのカスタマイズポイント
上記のコードは基本的な形です。次のように変更して用途に合わせられます。
- 保存先フォルダを指定する:
var folder = DriveApp.getFolderById('フォルダID');として特定のフォルダに保存できます。 - 画像形式を変更する:
getAs('image/png')の部分をgetAs('image/jpeg')に変えるとJPEG形式で出力されます。 - 特定のシートだけ処理する:
sheets配列をフィルターして、特定のシート名だけに絞り込めます。
一括出力でよく起きるトラブルと対処法
グラフが見つからないエラーになる
スクリプト実行時に「グラフが見つかりません」というエラーが表示される場合があります。これは、対象のシートにグラフが1つもないときに発生します。スプレッドシートにグラフが存在することを確認してください。また、グラフが画像として埋め込まれているのではなく、セル内の図形や画像である場合は、getCharts()では取得できません。グラフは「挿入」メニューから追加した本物のグラフである必要があります。
権限承認でエラーが出る
初回実行時に権限承認の画面が表示されず、代わりにエラーが表示されることがあります。これは、Google Workspaceの管理者によってApps Scriptの実行が制限されている場合に起こります。組織の管理者に問い合わせて、スクリプトの実行を許可してもらうか、個人のGoogleアカウントで試してください。また、スクリプトエディタの「実行」メニューから「関数を実行」を選び、明示的に「exportAllChartsToDrive」を選択してから実行すると改善することがあります。
ファイル名に使えない文字があるとエラーになる
グラフのタイトルに「/」「:」「*」などのファイル名に使えない文字が含まれていると、DriveApp.createFile()でエラーが発生します。上のコードではreplace(/[\/:*?"<>|]/g, '_')でこれらをアンダースコアに置換していますが、他の文字も適宜処理してください。特に見えない制御文字は事前に取り除くことをおすすめします。
ADVERTISEMENT
手動エクスポートとスクリプト一括出力の比較
| 項目 | 手動エクスポート | スクリプト一括出力 |
|---|---|---|
| 作業時間(グラフ10個) | 5〜10分 | 1分以内(スクリプト実行時間含む) |
| ファイル名の一貫性 | ばらつきやすい | 自動で統一された書式 |
| 画像形式の指定 | PNG固定(GUI上はPNGのみ) | PNG、JPEGなど選択可能 |
| 保存先の自由度 | ダウンロードフォルダのみ | 任意のGoogleドライブフォルダ |
| 繰り返し実行 | 毎回手動 | スクリプトを再度実行するだけ |
この表からもわかるように、グラフの数が多いほどスクリプト一括出力のメリットが大きくなります。特に定期的にグラフを更新して画像をエクスポートする業務では、スクリプトをトリガーで定期実行することも可能です。
まとめ
この記事では、Googleスプレッドシートの複数グラフを画像として一括出力する方法を解説しました。Apps Scriptを使うことで、手動では時間のかかる作業を数秒で完了できます。紹介したコードをそのまま使えば、全シートの全グラフがPNG形式でGoogleドライブに保存されます。応用として、条件に応じて特定のグラフだけ出力したり、画像形式をJPEGに変更したりするのも簡単です。次は、グラフをPDF形式で一括出力するスクリプトにも挑戦してみてください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
