GAS×Document.getName:データ分析を効率化するファイル名活用術

GASでファイル名を取得!Document.getNameでデータ分析を効率化

データ分析において、ファイル名の管理は意外と重要です。特にGoogle Apps Script (GAS) を利用して大量のデータを処理する場合、ファイル名を正しく取得し、それをレポート作成やグラフ生成に役立てることで、作業効率を大幅に向上させることができます。この記事では、GASのDocument.getName()関数に焦点を当て、データ分析の現場でどのように活用できるかを詳しく解説します。

Document.getName()の基本

Document.getName()は、Googleドキュメント、スプレッドシート、プレゼンテーションなどのファイル名を取得するために使用されるGASの関数です。この関数を使用することで、ファイル名をプログラム内で簡単に扱えるようになり、様々な自動化処理に応用できます。

構文

Document.getName()の基本的な構文は以下の通りです。

DocumentApp.getActiveDocument().getName();

このコードは、現在アクティブなドキュメントのファイル名を返します。同様に、スプレッドシートの場合はSpreadsheetApp.getActiveSpreadsheet().getName();、プレゼンテーションの場合はSlidesApp.getActivePresentation().getName();を使用します。

データ分析でのDocument.getName()の実装例

データ分析におけるDocument.getName()の活用例をいくつか紹介します。

1. レポート作成の自動化

複数のスプレッドシートからデータを集計してレポートを作成する際、ファイル名をレポートに含めることで、どのデータソースから集計されたかを明確にできます。

function createReport() {
// アクティブなスプレッドシートを取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getActiveSheet();

// ファイル名を取得
const fileName = ss.getName();

// レポートにファイル名を書き込む
sheet.getRange('A1').setValue('データソース:' + fileName);

// その他のデータ集計処理...
}

2. グラフ生成の自動化

スプレッドシートのデータを基にグラフを生成する際、ファイル名をグラフのタイトルに含めることで、どのデータに基づいたグラフかを一目で判断できます。

function createChart() {
// アクティブなスプレッドシートを取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getActiveSheet();

// ファイル名を取得
const fileName = ss.getName();

// グラフを作成
const chart = sheet.newChart()
.addRange(sheet.getDataRange())
.setChartType(Charts.ChartType.COLUMN)
.setOption('title', fileName + 'のデータ') // グラフタイトルにファイル名を設定
.setPosition(5, 5, 0, 0)
.build();

sheet.insertChart(chart);
}

3. 統計処理の自動化

複数のファイルに対して統計処理を行う場合、ファイル名をログや結果ファイルに記録することで、どのファイルに対して処理が行われたかを追跡できます。

function processData() {
// フォルダ内のすべてのスプレッドシートを取得
const folder = DriveApp.getFolderById('YOUR_FOLDER_ID');
const files = folder.getFilesByType(MimeType.GOOGLE_SHEETS);

while (files.hasNext()) {
const file = files.next();
const fileName = file.getName();
const ss = SpreadsheetApp.openById(file.getId());
const sheet = ss.getActiveSheet();
const data = sheet.getDataRange().getValues();

// 統計処理...
const average = calculateAverage(data);

// ログにファイル名と結果を記録
Logger.log(fileName + 'の平均値:' + average);
}
}

// 平均値を計算する関数
function calculateAverage(data) {
let sum = 0;
let count = 0;
for (let i = 0; i < data.length; i++) {
for (let j = 0; j < data[i].length; j++) {
if (typeof data[i][j] === 'number') {
sum += data[i][j];
count++;
}
}
}
return sum / count;
}

よくある問題とトラブルシューティング

  • ファイル名が取得できない:DocumentApp.getActiveDocument()などが正しいコンテキストで使用されているか確認してください。スクリプトが実行されているドキュメントがアクティブでない場合、エラーが発生します。
  • ファイル名が期待通りでない:ファイル名に特殊文字が含まれている場合、予期しない結果になることがあります。必要に応じて、ファイル名を正規化する処理を追加してください。

カスタマイズ方法と応用例

Document.getName()で取得したファイル名を加工して利用することも可能です。

ファイル名の一部を抽出する

function getFileNamePart() {
const fileName = SpreadsheetApp.getActiveSpreadsheet().getName();
// ファイル名をアンダースコアで分割
const parts = fileName.split('_');
// 最初の部分を取得
const firstPart = parts[0];
Logger.log(firstPart);
}

ファイル名を日付形式に変換する

function formatDateFromName() {
const fileName = SpreadsheetApp.getActiveSpreadsheet().getName();
// ファイル名がYYYYMMDD形式であると仮定
const year = fileName.substring(0, 4);
const month = fileName.substring(4, 6);
const day = fileName.substring(6, 8);
const formattedDate = year + '-' + month + '-' + day;
Logger.log(formattedDate);
}

まとめ

GASのDocument.getName()関数は、データ分析におけるファイル名管理を効率化するための強力なツールです。ファイル名をレポート、グラフ、ログに組み込むことで、データの追跡と管理が容易になり、分析作業の信頼性と効率を向上させることができます。ぜひ、この記事で紹介した実装例を参考に、実際の業務に活用してみてください。

PR

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

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